从Python字符串读取字节

4 投票
4 回答
20859 浏览
提问于 2025-04-16 07:39

我有一串十六进制的数据,想要逐字节地解析这个字符串。不过我查了文档,发现获取字节数据的唯一方法是用 f.read(1) 这个函数。

我该如何把这串十六进制字符解析成一个列表、数组,或者其他可以逐字节访问的结构呢?

4 个回答

3

你可以像处理其他序列一样,逐个字符地遍历一个字符串。

for c in 'Hello':
  print c
8

听起来你可能真正想要的是(Python 2.x):

from binascii import unhexlify
mystring = "a1234f"
print map(ord,unhexlify(mystring))

[161, 35, 79]

这个代码会把每一对十六进制字符转换成它的整数表示。

在Python 3.x中,你可以这样做:

>>> list(unhexlify(mystring))
[161, 35, 79]

不过,由于unhexlify的结果是一个字节字符串,你也可以直接访问这些元素:

>>> L = unhexlify(string)
>>> L
b'\xa1#O'
>>> L[0]
161
>>> L[1]
35

另外,Python 3还有一个bytes.fromhex()函数:

>>> for b in bytes.fromhex(mystring):
...  print(b)
...
161
35
79
0
mystring = "a1234f"
data = list(mystring)

数据将是一个列表,列表中的每个元素都是字符串中的一个字符。

撰写回答