Not that it matters much, but not using fmt::format makes
Util::format_hex ≈20x faster.
std::string
format_hex(const uint8_t* data, size_t size)
{
+ static const char digits[] = "0123456789abcdef";
std::string result;
- result.reserve(2 * size);
- for (size_t i = 0; i < size; i++) {
- result += fmt::format("{:02x}", data[i]);
+ result.resize(2 * size);
+ for (size_t i = 0; i < size; ++i) {
+ result[i * 2] = digits[data[i] >> 4];
+ result[i * 2 + 1] = digits[data[i] & 0xF];
}
return result;
}
* Returns length of encoded string.
*/
unsigned int base32hex(char *out, const uint8_t *in, unsigned int len) {
-int buf = 0, bits = 0;
+unsigned int buf = 0, bits = 0;
char *x = out;
while (len-- > 0) {