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

Convert double to LSBF (little Endian) hexadecimal string

本文关键字:Endian 十六进制 字符串 double 转换 LSBF      更新时间:2023-10-16

我正在尝试将double转换为小的Endian十六进制字符串,或者直接转换为特定类型的long(请参阅下文)。

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

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);

谢谢。

我发现,一旦我将_byteswap_ulong转换为_byteswap_ushort,结果是相同的。

我怀疑问题在于您只看到四个字节中的两个。

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

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

如果您只想要其中的一个单词,请使用_byteswap_ushort((unsigned short)myDouble)