如何读取每个元素需要不同字节长度的外部二进制文件中的数据?

时间:2014-03-29 04:50:28

标签: c

这是情况。我必须从外部二进制文件中读取数据并按顺序显示数据,以便对用户有意义。

该文件的数据存储如下:前4个字节是一个整数,接下来的8个字节是浮点十进制,接着是接下来的8个字节(浮点数)等。所以我需要先读取4个字节,然后重复8个字节...直到文件没有剩余数据要读。

我已经以这样的方式读取文件,即它将数据存储到数组i[NUM]中(其中NUM是元素数),每个元素包含4个字节。通过这样做,我意外地将浮动“拆分”成两半,前半部分存储在i[1]中,后半部分存储在i[2]中,也是i[3]中的浮点数和{{1等等。

现在我正在试图将每个浮子的两半再次“缝合”在一起,以显示它们,但我被卡住了。

非常感谢任何建议。

到目前为止我的代码:

i[4]

1 个答案:

答案 0 :(得分:1)

如果您确定float是8个字节且int是4,那么您可以执行此操作(可能在包含变量的循环中而不是固定索引I'使用过):

memcpy(&temp[0], &i[1], 8);

我假设您创建文件的代码是fwrite,其中您编写了4字节的int,然后编写了8字节的浮点数。

然后您可以使用printf("%f\n", temp[0]);或其他任何内容输出浮点数。

NB。您可以通过直接初始化数组来避免初始化循环:int i[NUM] = { 0 };等。这仅适用于0,而不适用于其他值。