python - 将字符串的子字符串转换为字节然后转换为python中的整数

标签 python python-3.x

我有一个文本文件,它实际上包含程序存储的十六进制值。例如 file.txt 将包含:

4D 45 5A 4E 53 41 54

我需要转换原始数据才能理解它,具体来说我需要取两个字节并将它们转换成一个整数。这是我采用的方法:

首先,我根据空格将文本文件拆分为一个数组。然后我将数组转换为字节数组。

 beacon = beacon.split()
 beaconBytes = [byte.encode('utf-8') for byte in beacon] 

现在看起来像这样:

[b'4D', b'45', b'5A', b'4E', b'53', b'41', b'54']

由于数据以小端方式传输,前两个字节应转换为 0x454d = 17741。

但为什么会这样:

 int.from_bytes(beaconBytes[0]+beaconBytes[1], byteorder='little', signed=False)

打印 892617780?这么庞大的数字从何而来?

最佳答案

“bytes”对象实际上具有 CHARS ‘4’、‘D’等值(与值 4、13 或其他由 0-9A- 表示的十六进制值不同) F).

要将十六进制字符串转换为 int 值,您可以简单地使用以 16 为底的 int,如下所示:

beacon = '4D 45 5A 4E 53 41 54'.split()
firstValHexStr = beacon[1]+beacon[0] # 454D
firstValInt = int(firstValHexStr,16)
print(firstValInt)

输出:

17741

根本不需要遍历 bytes 对象 :)

关于python - 将字符串的子字符串转换为字节然后转换为python中的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61039431/

相关文章:

python - django 中的动态表单选择/选项字段

python - 迭代和连接 2 个列表占用大量内存

arrays - 如何在 Python 3 中计算嵌套列表中的特定邻居

python - 拆分后获取子串的值

python - 如何在python中下载zip文件并从中解析csv文件

python - type(4) == type(int) 在 Python 中是 False 吗?

python-3.x - 在添加Python代码作为Kibana插件方面需要帮助

python-3.x - 按序列大小对 fasta 进行排序

python - 有没有更pythonic的方式来写这个?

python - Altair 并排分组条形图而不是单个图表