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

2024-10-16 17:19:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个文件中读取一组十六进制数

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

现在我想把它转换成float

我有一个IDL脚本,当读取这个数字时,会得到2.64523509

IDL中使用的命令是

double(4613138958682833088,0)

显示为0的位置是转换时使用的偏移量

在python中有没有实现这一点的方法


Tags: 文件inforindexlen文章rangeidl
1条回答
网友
1楼 · 发布于 2024-10-16 17:19:43

您可能想使用struct包来实现这一点,类似这样的东西似乎可以工作:

import struct

lines ='4005297103CE40C040059B532A7472C440061509BB9597D7400696DBCF1E35CC4007206BB5B0A67B4007AF4B08111B87400840D4766460524008D47E0FFB4ABA400969A572EBAFE7400A0107CCFDF50E'

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

结果2.64523509首先被打印出来,这似乎是正确的

相关问题 更多 >