python - Python:将 8 字节 IEEE754 数字转换为浮点数
问题描述
我有以下 8 字节字符串,它构成二进制文件的一部分
b = b'?\xf0\x00\x00\x00\x00\x00\x00'
我想将其转换为浮点数(应该等于 7.371791007870371e+05)。到目前为止,我尝试过的方法都没有奏效:
文字评估
from ast import literal_eval literal_eval(b) ValueError: malformed node or string: b'?\xf0\x00\x00\x00\x00\x00\x00'
遵循@martineau 在这篇文章中的回答:如何将二进制(字符串)转换为浮点值?
ValueError: int() 的无效文字,底数为 2: b'?\xf0\x00\x00\x00\x00\x00\x00'
在这两种情况下,引发的错误都表明字符串“b”是无效的,但我不明白这是怎么可能的,因为它是直接从二进制文件中读取的。
解决方案
这应该将字节解包为双精度(8 个字节,而不是 4 个字节的浮点数)。请注意,我使用来自@wim 的值。
import struct
print(struct.unpack('d', b'\xc8[\x9a36\x7f&A')[0])
推荐阅读
- django - Django Views 不合作提交表单
- calculator - hp prime 计算器 RPN 模式 x^y 函数错误
- powershell - 无法完全正确地获取 PowerShell 管道语法
- scala - 一个动作如何使用类型来传达它没有主体?
- react-native - 反应原生如何在单个元素上使用多个动画
- python - 单击提交按钮后如何清除或刷新 OptionMenu
- firebase - Android 上的 Firebase 电话身份验证
- unit-testing - 如何在file.pl中模拟一个func而不是一个模块
- ms-access - 如何检查两个表中是否存在值
- server - 我的 shadowsocks 无法在 virmach 的服务器上运行的可能原因是什么?