diff options
Diffstat (limited to 'src/common')
| -rw-r--r-- | src/common/hex_util.cpp | 7 | ||||
| -rw-r--r-- | src/common/hex_util.h | 16 | 
2 files changed, 12 insertions, 11 deletions
| diff --git a/src/common/hex_util.cpp b/src/common/hex_util.cpp index 5b63f9e81..c2f6cf0f6 100644 --- a/src/common/hex_util.cpp +++ b/src/common/hex_util.cpp @@ -30,13 +30,6 @@ std::vector<u8> HexStringToVector(std::string_view str, bool little_endian) {      return out;  } -std::string HexVectorToString(const std::vector<u8>& vector, bool upper) { -    std::string out; -    for (u8 c : vector) -        out += fmt::format(upper ? "{:02X}" : "{:02x}", c); -    return out; -} -  std::array<u8, 16> operator""_array16(const char* str, std::size_t len) {      if (len != 32) {          LOG_ERROR(Common, diff --git a/src/common/hex_util.h b/src/common/hex_util.h index 68f003cb6..bb4736f96 100644 --- a/src/common/hex_util.h +++ b/src/common/hex_util.h @@ -7,6 +7,7 @@  #include <array>  #include <cstddef>  #include <string> +#include <type_traits>  #include <vector>  #include <fmt/format.h>  #include "common/common_types.h" @@ -30,13 +31,20 @@ std::array<u8, Size> HexStringToArray(std::string_view str) {      return out;  } -std::string HexVectorToString(const std::vector<u8>& vector, bool upper = true); +template <typename ContiguousContainer> +std::string HexToString(const ContiguousContainer& data, bool upper = true) { +    static_assert(std::is_same_v<typename ContiguousContainer::value_type, u8>, +                  "Underlying type within the contiguous container must be u8."); + +    constexpr std::size_t pad_width = 2; -template <std::size_t Size> -std::string HexArrayToString(std::array<u8, Size> array, bool upper = true) {      std::string out; -    for (u8 c : array) +    out.reserve(std::size(data) * pad_width); + +    for (const u8 c : data) {          out += fmt::format(upper ? "{:02X}" : "{:02x}", c); +    } +      return out;  } | 
