这是情况。我必须从外部二进制文件中读取数据并按顺序显示数据,以便对用户有意义。
该文件的数据存储如下:前4个字节是一个整数,接下来的8个字节是浮点十进制,接着是接下来的8个字节(浮点数)等。所以我需要先读取4个字节,然后重复8个字节...直到文件没有剩余数据要读。
我已经以这样的方式读取文件,即它将数据存储到数组i[NUM]
中(其中NUM
是元素数),每个元素包含4个字节。通过这样做,我意外地将浮动“拆分”成两半,前半部分存储在i[1]
中,后半部分存储在i[2]
中,也是i[3]
中的浮点数和{{1等等。
现在我正在试图将每个浮子的两半再次“缝合”在一起,以显示它们,但我被卡住了。
非常感谢任何建议。
到目前为止我的代码:
i[4]
答案 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
,而不适用于其他值。