以下hexdump显示了我手头上的设备所做的一些数据。对于我来说,它以怪异的方式存储年,月,日,时,分,秒和长度(以4字节为单位的数字以反序排列)。

de 07 00 00 01 00 00 00  16 00 00 00 10 00 00 00
24 00 00 00 1d 00 00 00  15 00 00 00 X X X X

例如:
年份标记为“000007de”,也称为0x07de(= 2014)。现在;我遇到的问题是如何在c / c++中正确处理此问题。 (前4个字节)

我如何以“反向”顺序读取这4个字节,以使适当的十六进制数可以像int / longs之后处理?

最佳答案

如果在同一体系结构上将值读取为int,则无需执行任何操作,因为这是系统的自然格式。

如果您想在具有不同二进制格式的不同体系结构上阅读它,则只需要对此做些事情。

所以你可以简单地阅读

 int32_t n;
 fread(&n, sizeof int32_t, 1, FILE);

当然,必须以二进制模式打开文件,并且您需要32位int。

关于c++ - 奇怪的十六进制格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21288933/

10-11 22:57
查看更多