python中的十六进制字符串到浮点转换与IEEE-754值不匹配

python中的十六进制字符串到浮点转换与IEEE-754值不匹配,python,floating-point,hex,data-conversion,ieee-754,Python,Floating Point,Hex,Data Conversion,Ieee 754,在Python中,我需要将字符串转换为float,其中字符串的十六进制值如下所示 print(float.fromhex("c018dd8dad51d100")) 我得到的值为: 1.3842057055291167e+19 但是IEEE-754计算器中的相同字符串给出了一些其他负值。我的要求是符合IEEE-754标准。有人能帮我吗?float.fromhex不会做你认为它能做的事 您可以使用binascii.unhexlify将十六进制转换为字节,然后使用struct.unpack将8个IE

在Python中,我需要将字符串转换为float,其中字符串的十六进制值如下所示

print(float.fromhex("c018dd8dad51d100"))
我得到的值为:

1.3842057055291167e+19

但是IEEE-754计算器中的相同字符串给出了一些其他负值。我的要求是符合IEEE-754标准。有人能帮我吗?

float.fromhex不会做你认为它能做的事

您可以使用binascii.unhexlify将十六进制转换为字节,然后使用struct.unpack将8个IEEE-754字节转换为双字节。您的表示形式似乎是big-endian,因此我添加了>:

float.fromhex不会做你认为它会做的事情

您可以使用binascii.unhexlify将十六进制转换为字节,然后使用struct.unpack将8个IEEE-754字节转换为双字节。您的表示形式似乎是big-endian,因此我添加了>:


你从计算器中得到的另一个值是多少?这能回答你的问题吗?你从计算器中得到的另一个值是多少?这能回答你的问题吗?它起作用了。令人惊叹的谢谢,它起作用了。令人惊叹的谢谢
import binascii
import struct

# "d" is for double, > is for big endian, see https://docs.python.org/3/library/struct.html
value, = struct.unpack('>d', binascii.unhexlify(b'c018dd8dad51d100'))