c二进制文件读取问题

时间:2010-08-05 21:05:48

标签: c binary binaryfiles

嗨,我正在使用c阅读二进制文件,如下所示link text

以便从二进制文件读取的所有信息都存储在“char * buffer”中。 我有格式标准,它说其中一行应

   format: unsigned char, size: 1 byte

我正在做以下事情:

   printf("%x\n", buffer[N]);

但格式说:

,我该怎么办?
   format: unsigned short, size: 2 bytes

如果我这样做,这是否正确:

   printf("%d%d\n", buffer[N], buffer[N+1]); 

如果没有,你能告诉我正确的方法吗?

还可以告诉我打印时是否有正确的方法:

   char              %c
   unsigned long     %ul
   unsigned short    %d
   unsigned char     %x
   double            %f
   long              %ld

二进制文件中的所有数据都是小端格式!非常感谢!

1 个答案:

答案 0 :(得分:2)

试试printf("%d", (short)(buffer[N] + buffer[N+1]<<8))。现在请注意,我必须假设缓冲区中的字节顺序具有存储在较低地址的双字节short的最低有效字节。

我可能写了*(short *)(&buffer[N]),但是假设N有正确的对齐方式在您的平台上保存short,并且缓冲区和平台在字节顺序上达成一致。

这实际上只是一个主题非常大的冰山一角。当你徘徊在浮点数值时,潜伏着许多微妙的问题,有些问题确实很不容易。