2010-11-26 228 views
3

我有一個字符串中的十六進制數據。我需要能夠逐字節地解析字符串,但通過閱讀文檔,獲取字節數據的唯一方法是通過f.read(1)函數。從Python讀取字節字符串

如何解析一個十六進制字符的字符串,可以是一個列表,也可以是一個數組,或者是一個可以逐字節訪問的結構。

回答

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

數據將是一個列表,其中每個元素是字符串中的一個字符。

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 
7

這聽起來像你可能真的想(的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