python从二进制文件中读取16字节长的双精度值

2024-05-23

我找到了蟒蛇struct.unpack()读取其他程序生成的二进制数据非常方便。

问题:如何阅读16 字节长双精度数出二进制文件?

以下 C 代码将 1.01 写入二进制文件三次,分别使用 4 字节浮点型、8 字节双精度型和 16 字节长双精度型。

FILE* file     = fopen("test_bin.bin","wb");
float f        = 1.01;
double d       = 1.01;
long double ld = 1.01;
fwrite(&f, sizeof(f),1,file);
fwrite(&d, sizeof(d),1,file);
fwrite(&ld, sizeof(ld),1,file);                     
fclose(file);

在Python中,我可以毫无问题地读取浮点数和双精度数。

file=open('test_bin.bin','rb')
struct.unpack('<fd',file.read(12)) # (1.0099999904632568, 1.01) as expected.

我在模块中没有找到 16 字节长双精度的描述struct 格式化字符部分 https://docs.python.org/3/library/struct.html#format-characters.


Python 本身不支持 binary128,因此您在标准库中找不到对它们的支持。您将需要使用 NumPy(特别是numpy.frombuffer() http://docs.scipy.org/doc/numpy/reference/generated/numpy.frombuffer.html)从字节转换为二进制128。

f128 = numpy.frombuffer(file.read(16), dtype=numpy.float128)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python从二进制文件中读取16字节长的双精度值 的相关文章

随机推荐