[英]How do you convert a list of characters and bytes into a list of pure bytes?
我有一個列表,其中包含字符和字節的混合,如下所示:
myData = ['a', '\x65', 'B', '\x66\x69', 'C']
我想將此列表轉換為字節數組,因此:
myByteArray = ['\x61' , '\x65', '\x42', '\x66', '\x69', '\x43']
我到目前為止嘗試的是myData上的簡單顯示 -
myData = ['a', '\x65', 'B', '\x66\x69', 'C']
print " ".join(hex(ord(n)) for n in myData)
由於數組中的元素恰好是兩個字節,因此會拋出此錯誤:
Traceback (most recent call last):
File "./test.py", line 3, in <module>
print " ".join(hex(ord(n)) for n in myData)
File "./test.py", line 3, in <genexpr>
print " ".join(hex(ord(n)) for n in myData)
TypeError: ord() expected a character, but string of length 2 found
如何將原始列表myData轉換為字節數組myByteArray?
您可以將它們全部合並,然后再次拆分以獲取各個字符,例如:
output_list = [hex(ord(c)) for c in ''.join(myData)]
嘗試一下,
>>> myData = ['a', '\x65', 'B', '\x66\x69', 'C']
>>> [hex(ord(c)) for c in ''.join(myData)]
['0x61', '0x65', '0x42', '0x66', '0x69', '0x43']
如果你真的想要一個可變字節list
而不是一個不可變的單字符字符串,你可以這樣做:
myData = ['a', '\x65', 'B', '\x66\x69', 'C', '\xff']
myByteArray = bytearray(''.join(myData))
print " ".join(hex(byte) for byte in myByteArray)
# 0x61 0x65 0x42 0x66 0x69 0x43 0xff
如果一個字符的字符串list
問題,那么您只需要:
myByteArray = list(''.join(myData))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.