Python 3.x 如何在python中将十六进制值转换为浮点数

Python 3.x 如何在python中将十六进制值转换为浮点数,python-3.x,floating-point,hex,Python 3.x,Floating Point,Hex,我有十六进制值4396 eccd。如果我使用一些将其转换为浮点数,则得到的值为301.85,这是正确的 但是当我使用python转换它时,我得到了一些不同的值: >>> float.fromhex('0x4396eccd') 1133964493.0 有谁能帮我解释一下为什么它在python中显示了错误的值。感谢了解fromhex()的功能,您可以参考以下内容: 您最好使用struct模块,而不是使用fromhex()将十六进制字符串转换为浮点数 在Python2.x中 &g

我有十六进制值
4396 eccd
。如果我使用一些将其转换为浮点数,则得到的值为
301.85
,这是正确的

但是当我使用python转换它时,我得到了一些不同的值:

>>> float.fromhex('0x4396eccd')
1133964493.0

有谁能帮我解释一下为什么它在python中显示了错误的值。感谢了解
fromhex()的功能,您可以参考以下内容:

您最好使用
struct
模块,而不是使用
fromhex()
将十六进制字符串转换为浮点数

在Python2.x中

>>> import struct
>>> struct.unpack('!f', '41973333'.decode('hex'))[0]
18.899999618530273
在python 3.x中,使用:

bytes.fromhex('41973333')
而不是
'41973333'。解码('hex')

因此,情况如下:

>>> import struct
>>> struct.unpack('!f', bytes.fromhex('41973333'))[0]
18.899999618530273

您的解决方案给了我以下错误:
AttributeError:'str'对象没有属性“decode”
对不起,我的错误。再检查一遍。对我来说,它正在工作。这对你有用吗?如果它有效,请将它标记为已解决,如果没有,请让我知道。谢谢你能看看这个问题,请我在评论中回答@桑德鲁