我有以下8字节字符串,它构成了二进制文件的一部分
b = b'?\xf0\x00\x00\x00\x00\x00\x00'
我希望将其转换为浮点数(应该等于7.371791007870371e + 05)。到目前为止,我尝试过的方法都没有奏效:
literal_eval
来自ast import literal_eval literal_eval(b)中 ValueError:格式错误的节点或字符串:b'?\ xf0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00'
关注@ martineau在这篇文章中的回答:How to convert a binary (string) into a float value?
ValueError:对于带有基数2的int()的无效文字:b'?\ xf0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00'
在这两种情况下,引发的错误都表明字符串' b'是无效的,但我不知道这是如何可能的,因为它直接从二进制文件中读取。
答案 0 :(得分:2)
这应该将字节解包为double(8字节,而不是4字节的浮点数)。请注意,我使用@wim中的值。
import struct
print(struct.unpack('d', b'\xc8[\x9a36\x7f&A')[0])