28 lines
624 B
C++
28 lines
624 B
C++
#pragma once
|
|
|
|
#include <string>
|
|
#include "mp_utils.hpp"
|
|
|
|
namespace mp
|
|
{
|
|
|
|
template <class T>
|
|
inline std::string ToHexString(const T& number)
|
|
{
|
|
constexpr size_t ELEMENT_DIGITS = T::ELEMENT_BYTES * 2;
|
|
|
|
std::string str(number.GetNumElements() * ELEMENT_DIGITS, '-');
|
|
|
|
for (size_t elem = 0; elem < number.GetNumElements(); ++elem)
|
|
{
|
|
auto v = number.GetElement(elem);
|
|
for (size_t digit = 0; digit < ELEMENT_DIGITS; ++digit)
|
|
{
|
|
str[str.size() - 1 - (elem * ELEMENT_DIGITS) - digit] = utils::HexDigit((v >> (digit * 4)) & 0xF);
|
|
}
|
|
}
|
|
|
|
return str;
|
|
}
|
|
|
|
} // namespace mp
|