【问题标题】:Convert hex string to float将十六进制字符串转换为浮点数
【发布时间】:2020-10-17 05:57:24
【问题描述】:

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

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 中做到这一点?

【问题讨论】:

标签: python casting hex idl-programming-language


【解决方案1】:

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

import struct

lines ='4005297103CE40C040059B532A7472C440061509BB9597D7400696DBCF1E35CC4007206BB5B0A67B4007AF4B08111B87400840D4766460524008D47E0FFB4ABA400969A572EBAFE7400A0107CCFDF50E'

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

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

【讨论】:

    猜你喜欢
    • 2014-03-01
    • 2014-06-18
    • 2018-01-11
    • 2010-12-08
    • 1970-01-01
    • 2018-01-31
    • 2016-06-02
    相关资源
    最近更新 更多