gpt4 book ai didi

python 从二进制文件中读取 16 个字节长的 double

转载 作者:太空狗 更新时间:2023-10-30 01:14:39 25 4
gpt4 key购买 nike

我发现 python struct.unpack() 读取其他程序生成的二进制数据非常方便。

问题:如何从二进制文件中读取16 字节长的 double

以下C代码将1.01写入二进制文件3次,分别使用4字节float、8字节double和16字节long double。

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 中,我可以毫无问题地读取 float 和 double。

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

我在模块 struct 中找不到 16 字节长 double 的描述 format character section .

最佳答案

Python 本身不支持 binary128s,因此您不会在标准库中找到对它们的支持。您将需要使用 NumPy(特别是 numpy.frombuffer())将字节转换为二进制 128。

f128 = numpy.frombuffer(file.read(16), dtype=numpy.float128)

关于python 从二进制文件中读取 16 个字节长的 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28775979/

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