我有一个64位IEEE-754十六进制值的列表,存储为字符串,我想将其转换为pythonfloat
:
['40D3970060AA64C3', ...]
我尝试过使用binascii.unhexlify and
解包结构`转换每个字符串,但由于这是64位,因此失败。在
我可以让它使用32位十六进制值:
^{pr2}$结果:
(1.24735742022795e-38,)
(6.597178645388664e-39,)
(1.3950116788944702e-38,)
当我转到64位时:
import binascii
import struct
hex_list_64 = ['40D3970060AA64C3', '40D3970060AA64C3', '40D3970060AA64C3']
for i, value in enumerate(hex_list_64, 0):
print(struct.unpack('<d', binascii.unhexlify(hex_list_64[i].replace(' ', ''))))
结果:
(-4.653463070196378e+16,)
(-4.653463070196378e+16,)
(-4.653463070196378e+16,)
但是,将40D3970060AA64C3
转换为二进制,应该可以得到2.00600059000000001105945557356E4
。通孔,http://www.binaryconvert.com/result_double.html?hexadecimal=40D3970060AA64C3
与我的平台的顺序相反:
^{pr2}$但是
这是有意义的,因为Intel通常在内部以小端顺序存储所有内容,而字符串(如果解释为read)则定义为big-endian。在
相关问题 更多 >
编程相关推荐