有很多示例代碼可以在幾行代碼中完成此操作。在Python 3.2中有一個庫可以在一次調用中做到這一點?如果不是,那麼最小代碼是做什麼的?Python - 將字符串「0xDE 0xAD 0xBE 0xEF」解析爲字節數組
我很高興能得到任何類似列表(可轉位和迭代器)結果的結果...
編輯:你們是快!我喜歡這一個:
byte_collection = bytes(int(x, 16) for x in some_string.split())
有很多示例代碼可以在幾行代碼中完成此操作。在Python 3.2中有一個庫可以在一次調用中做到這一點?如果不是,那麼最小代碼是做什麼的?Python - 將字符串「0xDE 0xAD 0xBE 0xEF」解析爲字節數組
我很高興能得到任何類似列表(可轉位和迭代器)結果的結果...
編輯:你們是快!我喜歡這一個:
byte_collection = bytes(int(x, 16) for x in some_string.split())
3>> bytes(int(x, 16) for x in '0xDE 0xAD 0xBE 0xEF'.split())
b'\xde\xad\xbe\xef'
這不適用於我的2.7.2 Python。 – 2012-03-05 03:24:56
@Corey:沒有人說這是應該的。 – 2012-03-05 03:25:19
只是爲了尋找那些可能會發現這一點的人。 – 2012-03-05 03:28:33
如果你想把它當作一個整數列表,這應該工作,假設s
包含您的字符串:
[int(piece, 16) for piece in s.split()]
如果你想把它當作一個字符串,則可以使用這樣的:
''.join(chr(int(piece, 16)) for piece in s.split())
的整數列表:
list_of_ints = [int(x, 16) for x in inputstr.split()]
字節的字符串(ASCII字符):
string_of_bytes = ''.join(chr(int(x, 16)) for x in inputstr.split())
在Python 3:
string_of_bytes = bytes(int(x, 16) for x in inputstr.split())
int()'理解'0x'無需將其去掉 – 2012-03-05 06:03:26
@gnibbler好點。 – Amber 2012-03-05 06:08:40
爲什麼會出現有問題 「的幾行代碼?」鑑於您可能會將此代碼鎖定在某個函數中,解決方案的一行還是很多很重要嗎? – 2012-03-05 03:17:32
接受的解決方案不需要定義我自己的方法來隱藏如何去做。在應用程序代碼中不必要地包裝標準python庫是我的寵兒。這只是沒有必要。我喜歡下面的解決方案,我接受並認爲沒有理由包裝它。 – 2012-03-06 00:41:48