我有一个二进制文件,它是一个简单的有符号32位ieee754float列表。它们没有被任何东西隔开,只是一个接一个地出现,直到EOF。我如何从这个文件中读取并将它们正确解释为float?我尝试使用read(4),但它会自动将它们转换为带有ascii编码的字符串。我也尝试过使用bytearray但这一次只需要1个字节,而不是我需要的4个字节。 最佳答案 struct.unpack('f',file.read(4))你也可以一次解包几个,这样会更快:struct.unpack('f'*n,file.read(4*n))
我想在thisone之后提出一个问题如果编译器使用标准,定义检查很好地回答了这个问题。但是,这仅适用于C。有没有办法在C++中做同样的事情?我不希望将浮点类型转换为文本或使用一些相当复杂的转换函数。我只需要编译器检查。如果您知道此类兼容编译器的列表,请发布链接。没找到。 最佳答案 实际上,您有一个更简单的方法可以在C++中实现这一点。从C++标准18.2.1.1开始,numeric_limits类存在于std中。为了访问所述静态成员,您只需执行以下操作:std::numeric_limits::is_iec559;或者:std::n
我想在thisone之后提出一个问题如果编译器使用标准,定义检查很好地回答了这个问题。但是,这仅适用于C。有没有办法在C++中做同样的事情?我不希望将浮点类型转换为文本或使用一些相当复杂的转换函数。我只需要编译器检查。如果您知道此类兼容编译器的列表,请发布链接。没找到。 最佳答案 实际上,您有一个更简单的方法可以在C++中实现这一点。从C++标准18.2.1.1开始,numeric_limits类存在于std中。为了访问所述静态成员,您只需执行以下操作:std::numeric_limits::is_iec559;或者:std::n