pw_string: Improve StringBuilder hex support

Updates StringBuilder to format byte spans and byte arrays as hex
strings, and changes the std::byte ToString() overload such that it will
always emit full-width bytes (e.g. 04 instead of 4).

Change-Id: Iba5b7b81d190e9953424abd24f639134095cbd46
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/70183
Pigweed-Auto-Submit: Armando Montanez <amontanez@google.com>
Commit-Queue: Wyatt Hepler <hepler@google.com>
Reviewed-by: Ewout van Bekkum <ewout@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
7 files changed
tree: 98482eaacfc4f4425a25fe960417b3db2bc7c1b4
  1. build_overrides/
  2. docker/
  3. docs/
  4. pw_allocator/
  5. pw_analog/
  6. pw_android_toolchain/
  7. pw_arduino_build/
  8. pw_assert/
  9. pw_assert_basic/
  10. pw_assert_log/
  11. pw_base64/
  12. pw_bloat/
  13. pw_blob_store/
  14. pw_bluetooth_hci/
  15. pw_boot/
  16. pw_boot_cortex_m/
  17. pw_build/
  18. pw_build_info/
  19. pw_build_mcuxpresso/
  20. pw_bytes/
  21. pw_checksum/
  22. pw_chrono/
  23. pw_chrono_embos/
  24. pw_chrono_freertos/
  25. pw_chrono_stl/
  26. pw_chrono_threadx/
  27. pw_cli/
  28. pw_console/
  29. pw_containers/
  30. pw_cpu_exception/
  31. pw_cpu_exception_cortex_m/
  32. pw_crypto/
  33. pw_docgen/
  34. pw_doctor/
  35. pw_env_setup/
  36. pw_file/
  37. pw_function/
  38. pw_fuzzer/
  39. pw_hdlc/
  40. pw_hex_dump/
  41. pw_i2c/
  42. pw_interrupt/
  43. pw_interrupt_cortex_m/
  44. pw_kvs/
  45. pw_libc/
  46. pw_log/
  47. pw_log_basic/
  48. pw_log_null/
  49. pw_log_rpc/
  50. pw_log_tokenized/
  51. pw_malloc/
  52. pw_malloc_freelist/
  53. pw_metric/
  54. pw_minimal_cpp_stdlib/
  55. pw_module/
  56. pw_multisink/
  57. pw_package/
  58. pw_persistent_ram/
  59. pw_polyfill/
  60. pw_preprocessor/
  61. pw_presubmit/
  62. pw_protobuf/
  63. pw_protobuf_compiler/
  64. pw_random/
  65. pw_result/
  66. pw_ring_buffer/
  67. pw_router/
  68. pw_rpc/
  69. pw_snapshot/
  70. pw_software_update/
  71. pw_span/
  72. pw_status/
  73. pw_stm32cube_build/
  74. pw_stream/
  75. pw_string/
  76. pw_symbolizer/
  77. pw_sync/
  78. pw_sync_baremetal/
  79. pw_sync_embos/
  80. pw_sync_freertos/
  81. pw_sync_stl/
  82. pw_sync_threadx/
  83. pw_sys_io/
  84. pw_sys_io_arduino/
  85. pw_sys_io_baremetal_lm3s6965evb/
  86. pw_sys_io_baremetal_stm32f429/
  87. pw_sys_io_mcuxpresso/
  88. pw_sys_io_stdio/
  89. pw_target_runner/
  90. pw_thread/
  91. pw_thread_embos/
  92. pw_thread_freertos/
  93. pw_thread_stl/
  94. pw_thread_threadx/
  95. pw_tls_client/
  96. pw_tls_client_boringssl/
  97. pw_tls_client_mbedtls/
  98. pw_tokenizer/
  99. pw_tool/
  100. pw_toolchain/
  101. pw_trace/
  102. pw_trace_tokenized/
  103. pw_transfer/
  104. pw_unit_test/
  105. pw_varint/
  106. pw_watch/
  107. pw_web_ui/
  108. pw_work_queue/
  109. targets/
  110. third_party/
  111. .bazelignore
  112. .bazelrc
  113. .clang-format
  114. .clang-tidy
  115. .eslintrc.json
  116. .gitattributes
  117. .gitignore
  118. .gn
  119. .prettierrc.js
  120. .pylintrc
  121. activate.bat
  122. AUTHORS
  123. bootstrap.bat
  124. bootstrap.sh
  125. BUILD.bazel
  126. BUILD.gn
  127. BUILDCONFIG.gn
  128. CMakeLists.txt
  129. LICENSE
  130. modules.gni
  131. OWNERS
  132. package.json
  133. PW_PLUGINS
  134. README.md
  135. tsconfig.json
  136. WORKSPACE
  137. yarn.lock
README.md

Pigweed

Pigweed is an open source collection of embedded-targeted libraries–or as we like to call them, modules. These modules are building blocks and infrastructure that enable faster and more reliable development on small-footprint MMU-less 32-bit microcontrollers like the STMicroelectronics STM32L452 or the Nordic nRF52832.

For more information please see our website: https://pigweed.dev/

Links