Python:将8字节IEEE754数转换为float

时间:2018-04-30 20:22:05

标签: python floating-point binary type-conversion

我有以下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'是无效的,但我不知道这是如何可能的,因为它直接从二进制文件中读取。

1 个答案:

答案 0 :(得分:2)

这应该将字节解包为double(8字节,而不是4字节的浮点数)。请注意,我使用@wim中的值。

import struct
print(struct.unpack('d', b'\xc8[\x9a36\x7f&A')[0])