将double转换为LSBF(little Endian)十六进制字符串

时间:2012-09-05 23:32:09

标签: c++ visual-studio-2010 type-conversion

我正在尝试将double转换为little-Endian十六进制字符串或直接转换为特定类型的long(见下文)。

以前,我将预定义的little-Endian十六进制字符串转换为long,如下所示。

string hcommand = "01AC"; char * p; long n = strtol(hcommand.c_str(), &p, 16); 这符合要求。

现在我尝试将double转换为little-Endian(最低字节优先字节)形式的十六进制字符串(然后在上面的代码中替换hcommand)或者直接从double转换为相同类型的long上方。

我试过这个,它的处理方式与上面不同。

double myDouble = 44033; long hcommand = (long)_byteswap_ulong((int)myDouble);

谢谢。

2 个答案:

答案 0 :(得分:0)

我发现将_byteswap_ulong转换为_byteswap_ushort后,结果完全相同。

答案 1 :(得分:0)

我怀疑问题是你只看到四分之二的字节。

在第一个示例中,您获得值0xAC01(428)。

在第二个例子中,你取myDouble即0x01AC0000并将其转换为0x0000AC01(28049408)。

如果您只想要一个字,请使用_byteswap_ushort((unsigned short)myDouble)