将十六进制字符串转换为浮点数

Convert hex string to float

我正在尝试从文件中读取一堆十六进制数字。

lines ='4005297103CE40C040059B532A7472C440061509BB9597D7400696DBCF1E35CC4007206BB5B0A67B4007AF4B08111B87400840D4766460524008D47E0FFB4ABA400969A572EBAFE7400A0107CCFDF50E'
dummy = [lines[index][i:i+16] for i in range(0, len(lines[index]),16)]
rdummy=[]
for elem in dummy[:-1]:
 
                rdummy.append(int(elem,16))

这是10个16位数字 特别是在阅读第一个时,我有:

print(dummy[0])
4005297103CE40C0

现在我想把它转换成浮点数

我有一个 IDL 脚本,当读取这个数字时给出 2.64523509

IDL中使用的命令是

double(4613138958682833088,0)

出现 0 的地方是转换时使用的偏移量。

在 python 中有没有办法做到这一点?

你可能想为此使用 struct 包,像这样的东西似乎有效:

import struct

lines ='4005297103CE40C040059B532A7472C440061509BB9597D7400696DBCF1E35CC4007206BB5B0A67B4007AF4B08111B87400840D4766460524008D47E0FFB4ABA400969A572EBAFE7400A0107CCFDF50E'

for [value] in struct.iter_unpack('>d', bytes.fromhex(lines)):
  print(value)

导致 2.64523509 先打印,这似乎是正确的