将十六进制字符串转换为浮点数
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
先打印,这似乎是正确的
我正在尝试从文件中读取一堆十六进制数字。
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
先打印,这似乎是正确的