#pragma once #include #include "mp_utils.hpp" namespace mp { template 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