如何重新排列python十六进制字符串中的字节并将其转换为long

2024-04-26 06:42:26 发布

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

我有一个长的十六进制字符串20D788028A4B59FB3C07050E2F30,我想提取前4个字节,改变它们的顺序,转换成有符号的数字,除以2^20,然后打印出来。在C语言中,这对我来说很容易:)但是我有点卡住了。在

例如,正确的答案将从上面的字符串中提取4字节数,即0x288D720。除以2^20等于40.5525。主要是在python中,我很难找到正确的方法来进行字节操作。在C语言中,我只需要抓取指向每个字节的指针,并将它们移到我想要的位置,并转换成int或long。在


Tags: 方法字符串答案字节顺序符号数字long
2条回答

你只需要做一个提取 foo[:8]

十六进制到字节:hexadecimal string to byte array in python

重新排列字节:byte reverse AB CD to CD AB with python

您可以使用struct转换为long

(2**20)做一个普通除法

Python在字符串方面非常出色,所以让我们使用我们现有的:

s = "20D788028A4B59FB3C07050E2F30"
t = "".join([s[i-2:i] for i in range(8,0,-2)])
print int(t, 16) * 1.0 / pow(2,20)

但是用2**20除以有点奇怪,所以也许移位至少也值得一提。。。在

^{pr2}$

毕竟,我会的

print int(t, 16) * 1.0 / (1 << 20)

相关问题 更多 >