xref: /openbmc/bmcweb/features/redfish/include/utils/hex_utils.hpp (revision f201ffb46cec98eba672a06d06951117e3829013)
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