2012-03-05 10 views
0

これを達成するためのコードは、数行のコードで豊富に用意されています。 1回の呼び出しでこれを行うことができるPython 3.2のライブラリはありますか?そうでない場合は、これを行うための最低限のコードは何ですか?Python - "0xDE 0xAD 0xBE 0xEF"形式の文字列をバイトで解析する

私は

編集...任意のリストのような(インデックス可能と反復可能な)結果に結果を取得させていただきます:君たちは速いです!私はこの1つが好き:

byte_collection = bytes(int(x, 16) for x in some_string.split()) 
+1

なぜに問題がある "数行のコードは?"あなたはおそらくどこかの関数でこのコードをロックすることを考えれば、ソリューションの1行またはそれ以上の数が本当に重要なのでしょうか? –

+0

受け入れられた解決法では、それを行う方法を隠すために自分のメソッドを定義する必要はありません。これは、標準的なPythonライブラリをアプリケーションコードで不必要にラップするための私の苦労です。それは単なる不要です。私はそれを受け入れて、それを包む理由がないことを私は下の解決策が好きです。 –

答えて

3
3>> bytes(int(x, 16) for x in '0xDE 0xAD 0xBE 0xEF'.split()) 
b'\xde\xad\xbe\xef' 
+0

これは2.7.2のPythonでは動作しません。 –

+0

@Corey:誰もそれはないと言った。 –

+0

これを見つけられるかもしれない人たちのためにちょうど向こうです。 –

2

あなたが整数のリストとしてそれをしたい場合は、これは動作するはずです、sはあなたの文字列が含まれていると仮定すると:

[int(piece, 16) for piece in s.split()] 

あなたは文字列としてそれをしたい場合は、使用することができますこの:整数の

''.join(chr(int(piece, 16)) for piece in s.split()) 
3

一覧:

list_of_ints = [int(x, 16) for x in inputstr.split()] 

バイトの文字列(ASCII文字):Pythonの3では

string_of_bytes = ''.join(chr(int(x, 16)) for x in inputstr.split()) 

は:

string_of_bytes = bytes(int(x, 16) for x in inputstr.split()) 
+0

' int() 'は' 0x'を認識します。それを剥がす必要はありません –

+0

@gnibbler良い点。 – Amber