3

次のような文字とバイトが混在するリストがあります。

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)

たまたま 2 バイトの要素が配列にあるため、次のエラーがスローされます。

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 に変換するにはどうすればよいですか?

4

2 に答える 2

1

list不変の1文字の文字列ではなく、実際に可変バイトの が必要な場合は、次のようにすることができます。

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

1 文字の文字列で問題ない場合list、必要なのは次のとおりです。

myByteArray = list(''.join(myData))
于 2013-10-08T18:50:48.957 に答える