将整数转换为Little Endian Hex String

时间:2012-09-11 23:12:50

标签: c++ visual-studio-2010 windows-xp long-integer endianness

我正在尝试将整数转换为小尾数十六进制字符串。我可以得到一个小的十字架十六进制长,但我不知道如何从那里转换为字符串。

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

或者,有没有办法直接从整数到小端十六进制字符串?

感谢。

2 个答案:

答案 0 :(得分:1)

使用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 :(得分:0)

对于便携式解决方案,只需掩盖并转移:

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