string makeHexDump(const string& str)
{
- char tmp[5];
+ std::array<char, 5> tmp;
string ret;
- ret.reserve((int)(str.size()*2.2));
+ ret.reserve(static_cast<size_t>(str.size()*2.2));
- for(char n : str) {
- snprintf(tmp, sizeof(tmp), "%02x ", (unsigned char)n);
- ret+=tmp;
+ for (char n : str) {
+ snprintf(tmp.data(), tmp.size(), "%02x ", static_cast<unsigned char>(n));
+ ret += tmp.data();
}
return ret;
}
BOOST_CHECK_THROW(makeBytesFromHex("1234GG"), std::range_error);
}
+BOOST_AUTO_TEST_CASE(test_makeHexDump) {
+ auto out = makeHexDump("\x12\x34\x56\x78\x90\xab\xcd\xef");
+ // there is a trailing white space by design
+ BOOST_CHECK_EQUAL(out, "12 34 56 78 90 ab cd ef ");
+}
+
BOOST_AUTO_TEST_SUITE_END()