cpp_mp/mp_lib.hpp
2025-09-27 15:56:12 +02:00

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