以下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/