[英]Reading a binary file in Python: takes a very long time to read certain bytes
[英]python read 16 bytes long double from binary file
我发现python 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中,我可以读取float和double,没有问题。
file=open('test_bin.bin','rb')
struct.unpack('<fd',file.read(12)) # (1.0099999904632568, 1.01) as expected.
Python本身不支持binary128,因此您不会在标准库中找到对它们的支持。 您将需要使用NumPy(特别是numpy.frombuffer()
)将字节转换为binary128。
f128 = numpy.frombuffer(file.read(16), dtype=numpy.float128)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.