我有一个文本文件,它实际上包含由程序存储的十六进制值。例如,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”对象实际上具有字符“4”、“D”等的值(这与值4、13或由0-9A-F表示的其他十六进制值不同)
要将十六进制字符串转换为int值,只需使用以
int
为基数的16
,如下所示:输出:
根本不需要通过
bytes
对象:)encode
不会做你认为它会做的事。它只是改变字符编码。应使用int
将十六进制字符串转换为整数:相关问题 更多 >
编程相关推荐