2010-11-26 32 views
3

文字列に16進数のデータがあります。バイトごとに文字列を解析する必要がありますが、ドキュメントを読むことによって、バイト単位でデータを取得する唯一の方法はf.read(1)関数を使うことです。Pythonの文字列からバイトを読み取る

リスト、配列、またはバイトごとにアクセスできる構造のいずれかに、16進数の文字列を解析するにはどうすればよいですか。

答えて

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]

これはそれぞれのペアに変換します16進文字を整数表現に変換します。 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。 –

関連する問題