gpt4 book ai didi

c++ - fwrite 在一台计算机上 float ,在另一台计算机上被 fread

转载 作者:行者123 更新时间:2023-11-30 01:44:12 25 4
gpt4 key购买 nike

我有一个程序使用以下内容将 float 写入文件,最终将在用户的计算机上读取。

// computer A
float buffer[1024];
...
fwrite(reinterpret_cast<void*>(buffer), sizeof(float), 1024, file);

// computer B
float buffer[1024];
fread(reinterpret_cast<void*>(buffer), sizeof(float), 1024, file);

两台计算机上的程序不一样,但它们是使用相同的编译器和设置编译的(否则我不希望这会成功)。考虑到两个程序都针对平台进行编译, float 是否会在所有典型台式计算机上按预期解释,或者第二台计算机是否可能以不同方式解释字节?

最佳答案

The programs on the two computers are not the same, but they are compiled with the same compiler and settings (I wouldn't expect this to work out otherwise). Will the floats be interpreted as expected across all typical desktop computers, or is it possible the second computer will interpret the bytes differently?

几乎所有现代台式电脑都使用 IEEE 754 floating point format对于他们的单精度 float ,所以你应该没问题。

一个潜在的美中不足是字节顺序:如果你在一台有大端 CPU 的计算机上写出文件,然后在一台有小端 CPU 的计算机上读取它(反之亦然),那么读取计算机不会正确解释文件的值。这在过去几年不是什么大问题,因为现在几乎所有常用的 CPU 都是小端,但以前这个问题很常见,例如将数据从基于 Intel 的计算机传输到基于 PowerPC 的计算机时,反之亦然。处理该问题的一种常见方法是为文件中的值指定标准/规范的字节序(无论是哪一个),并确保在保存(或加载)文件时对值进行字节交换如果您保存/加载它们的计算机与您的文件格式指定的规范字节序不匹配。

关于c++ - fwrite 在一台计算机上 float ,在另一台计算机上被 fread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36540022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com