1 #pragma once 2 3 #include <array> 4 #include <string> 5 6 template <typename IntegerType> 7 inline std::string intToHexString(IntegerType value, 8 size_t digits = sizeof(IntegerType) << 1) 9 { 10 static constexpr std::array<char, 16> digitsArray = { 11 '0', '1', '2', '3', '4', '5', '6', '7', 12 '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; 13 std::string rc(digits, '0'); 14 size_t bitIndex = (digits - 1) * 4; 15 for (size_t digitIndex = 0; digitIndex < digits; digitIndex++) 16 { 17 rc[digitIndex] = digitsArray[(value >> bitIndex) & 0x0f]; 18 bitIndex -= 4; 19 } 20 return rc; 21 } 22