从Python字符串中读取字节

4

我有一个包含十六进制数据的字符串。我需要能够逐字节解析该字符串,但是通过阅读文档,唯一获取按字节数据的方法是使用f.read(1)函数。

我应该如何将十六进制字符解析为列表、数组或某种结构,以便可以逐字节访问。

4个回答

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

3
a = 'somestring'
print a[0]        # first byte
print ord(a[1])   # value of second byte

(x for x in a)    # is a iterable generator

3
您可以像遍历其他序列一样遍历字符串。
for c in 'Hello':
  print c

0
mystring = "a1234f"
data = list(mystring)

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接