python - 如何将十六进制转换为 IEEE float python

标签 python struct floating-point hex data-conversion

我想将此十六进制字符串'8436d4ccd436d3333'转换为IEEE浮点。我尝试使用 struct.unpack 来执行此操作,但它需要长度为 4 的字符串参数。

struct.unpack('>f', binascii.unhexlify('8436d999a436e0000'))

我正在使用此网站来验证我的转换尝试是否正确:https://gregstoll.dyndns.org/~gregstoll/floattohex/但我找不到办法做到这一点。

感谢您的帮助

最佳答案

据猜测,每个十六进制字符串包含两个个单精度浮点值,而不是一个,并且初始的8是正在执行的任何消息协议(protocol)的一部分使用过,而不是这些 float 的一部分。有了这个猜测,我得到了一些看似合理的数字:

>>> struct.unpack('>ff', binascii.unhexlify('436d4ccd436d3333'))
(237.3000030517578, 237.1999969482422)
>>> struct.unpack('>ff', binascii.unhexlify('436d999a436e0000'))
(237.60000610351562, 238.0)

为了增强可信度,以下是我通过编码相应的小数点后 1 位值得到的结果:

>>> binascii.hexlify(struct.pack('>ff', 237.3, 237.2))
b'436d4ccd436d3333'
>>> binascii.hexlify(struct.pack('>ff', 237.6, 238.0))
b'436d999a436e0000'

关于python - 如何将十六进制转换为 IEEE float python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44052818/

相关文章:

javascript - 如何使用 ajax 和 python 使 d3.js 强制定向图交互?

c++ - 不允许将结构实例分配给类实例

pointers - 使用指向外部结构的指针时如何使结构在其 Go 例程之外生存

c - 在 C 中将 float 转换为处理器内部的 int

c++ - 如何计算 32 位 float epsilon?

python - Paramiko 上的 exec_command 和使用 invoke_shell() 发送有什么区别?

python - 检查并关闭 python 生成器

python - PyQt5 嵌入 3D 散点图

c++ - 类构造函数和元素

c# - 随机矩阵的最佳类型 - 需要来源