gpt4 book ai didi

c++ - 确保二进制文件中的 float 在不同平台上按预期表示?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:21:59 35 4
gpt4 key购买 nike

我有一个很大的 float 列表,以下列格式的文本形式存储在一个文件中

0.0010245  0.4624603  1.326266  -5.203623

数字以纯文本形式写出,然后在读入程序时解析为实际 float 。

我想做的是缓存 4 个字节的浮点表示,将其存储为单独的二进制文件,然后在程序的后续运行中使用它而不是原始纯文本文件。但是,我需要确保平台的字节顺序和格式在运行之间没有改变(如果用户升级、移动文件或只是更换计算机)。

因此,我将测试 float 写入缓存文件的 header 。它存储了 -50.50505050 的 4 字节二进制表示(只是一个随机的魔数(Magic Number))。如果文件中表示的值与程序所说的匹配(在小错误范围内),它将使用缓存的文件。如果不是,它将使用原始文件并重新生成另一个缓存文件。

我的问题是,这个测试是否足以确保缓存文件的格式和字节顺序始终正确?

最佳答案

您可以为您的文件定义标准。 IE。说它总是小端和 32 位 IEEE float 。如果您的目标平台的 native 表示与此不同,则在读取文件时执行转换为 native 格式。

请注意,只有在计算机之间共享文件(或如您提到的升级)时才会出现此问题。如果您始终在相同的配置上运行它,则无需担心转换,始终只存储 native 格式。

关于c++ - 确保二进制文件中的 float 在不同平台上按预期表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24343332/

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