StringUtil: Add a HexDump function.

Generates a string like the following from a binary blob:

000000: 00 00 04 74 79 70 65 00 09 61 70 70 2d 73 74 61  ...type..app-sta
000010: 72 74                                            rt
This commit is contained in:
Pierre Bourdon 2016-06-17 02:08:12 +02:00
parent fd5d10005e
commit fe51de23f1
2 changed files with 36 additions and 0 deletions

View file

@ -36,6 +36,39 @@ static locale_t GetCLocale()
}
#endif
std::string HexDump(const u8* data, size_t size)
{
constexpr size_t BYTES_PER_LINE = 16;
std::string out;
for (size_t row_start = 0; row_start < size; row_start += BYTES_PER_LINE)
{
out += StringFromFormat("%06zx: ", row_start);
for (size_t i = 0; i < BYTES_PER_LINE; ++i)
{
if (row_start + i < size)
{
out += StringFromFormat("%02hhx ", data[row_start + i]);
}
else
{
out += " ";
}
}
out += " ";
for (size_t i = 0; i < BYTES_PER_LINE; ++i)
{
if (row_start + i < size)
{
char c = static_cast<char>(data[row_start + i]);
out += StringFromFormat("%c", isprint(c) ? c : '.');
}
}
out += "\n";
}
return out;
}
// faster than sscanf
bool AsciiToHex(const std::string& _szValue, u32& result)
{