python - 如何将十六进制字符串转换为解压缩的 IEEE 754 格式数字 :-

标签 python ieee-754

使用 Python 2.7.3:如何将十六进制字符串转换为解压缩的 IEEE 754 格式数字:-

我有一串这种形式的十六进制数据:

data = '38 1A A3 44'

我想使用 struct.unpack 将其转换为 float :

fdata = struct.unpack('<f','\x38\xA1\xA3\x44')  # fdata=1304.8193359375

是否有 Pythonic 解决方案,或者我是否需要以某种方式为 data 中的每个空格替换一个转义序列?

最佳答案

先将十六进制代码点转换为字节串; binascii.unhexlify()如果您删除空格,可以为您执行此操作:

import binascii
import struct

fdata = struct.unpack('<f', binascii.unhexlify(data.replace(' ', '')))[0]

演示:

>>> import binascii
>>> import struct
>>> data = '38 1A A3 44'
>>> struct.unpack('<f', binascii.unhexlify(data.replace(' ', '')))
(1304.8193359375,)

关于python - 如何将十六进制字符串转换为解压缩的 IEEE 754 格式数字 :-,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289180/

相关文章:

python - 如何对字符串中的所有字符(包括安全字符)进行 urlencode?

R 字节向量到 ieee 754 float

javascript - 将 Float32Array 转换为 Uint8Array 同时保留 IEEE 754 表示形式

java - 从 float 转换为 BigDecimal 然后再转换回来是否危险?

c# - 浮点范围缩减

python - 保存 Tkinter Canvas 对象

python - 打开文件只知道其名称的一部分

python - 获取在另一个终端中执行的 python 进程的状态

python - 我应该在 Python 字典上使用 'has_key()' 还是 'in' ?

python - 有人可以解释这种浮点行为吗?