Преобразовать целое число в шестнадцатеричную строку с прямым порядком байтов

Я пытаюсь преобразовать целое число в шестнадцатеричную строку с прямым порядком байтов. Я могу добраться до небольшого байта с прямым порядком байтов, но я не уверен, как конвертировать в строку оттуда.

int iNum = 17706;
// convert to long little endian hex
long lNum = (long)_byteswap_ushort(iNum);
// convert to string??

В качестве альтернативы, есть ли способ перейти прямо от шестнадцатеричной строки с прямым порядком байтов?

Благодарю.

0

Решение

использование std::stringstream отформатировать строки.

Также используйте _byteswap_ulong или большие целые не будут точными.

long iNum = 17706;
// convert to long little endian hex
long lNum = (long)_byteswap_ulong(iNum);
// convert to string
std::ostringstream oss;
oss << std::hex << lNum;
std::string mystring = oss.str();
1

Другие решения

Для портативного решения просто замаскируйте и сдвиньте:

while (iNum != 0) {
int byte = iNum & 0x0F;
std::cout << std::hex << byte;
iNum /= 16;
}
0

По вопросам рекламы [email protected]