从Python读取字节字符串

问题描述:

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

如何解析一个十六进制字符的字符串,可以是一个列表,也可以是一个数组,或者是一个可以逐字节访问的结构。

mystring = "a1234f" 
data = list(mystring) 

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

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

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

您可以像遍历其他序列一样遍历字符串。

for c in 'Hello': 
    print c 

这听起来像你可能真的想(的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 
+0

线条之间的阅读+1。 – 2010-12-01 03:10:22