如何将十六进制字符串转换为未打包的IEEE 754格式数字:

3 投票
1 回答
9731 浏览
提问于 2025-04-18 10:14

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

我有一串十六进制数据,格式如下:

data = '38 1A A3 44'

我想通过使用 struct.unpack 将其转换为浮点数:

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

有没有简单的 Python 方法,还是说我需要为 data 中的每个空格替换成转义序列呢?

1 个回答

7

首先,把十六进制的代码点转换成字节串;你可以使用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,)

撰写回答