diff --git a/src/common/hex_util.h b/src/common/hex_util.h index 0d413dbc0b..df915f908a 100644 --- a/src/common/hex_util.h +++ b/src/common/hex_util.h @@ -48,13 +48,12 @@ template template requires std::is_same_v [[nodiscard]] std::string HexToString(const ContiguousContainer& data, bool upper = true) { - auto const* htbl = upper ? "0123456789ABCDEF" : "0123456789abcdef"; - std::string out(std::size(data) * 2); - for (size_t i = 0; i < std::size(data); ++i) { - auto const c = data[i]; - out[i * 2 + 0] = htbl[(c >> 4) & 0xf]; - out[i * 2 + 1] = htbl[(c >> 0) & 0xf]; - } + constexpr std::size_t pad_width = 2; + std::string out; + out.reserve(std::size(data) * pad_width); + const auto format_str = fmt::runtime(upper ? "{:02X}" : "{:02x}"); + for (const u8 c : data) + out += fmt::format(format_str, c); return out; }