85

Pythonでバイト配列(Javaのbyte []のように)を表現するにはどうすればよいですか?geventを使って有線で送信する必要があります。

byte key[] = {0x13, 0x00, 0x00, 0x00, 0x08, 0x00};
4

4 に答える 4

88

Python 3では、bytesPython2とも呼ばれるオブジェクトを使用しますstr

# Python 3
key = bytes([0x13, 0x00, 0x00, 0x00, 0x08, 0x00])

# Python 2
key = ''.join(chr(x) for x in [0x13, 0x00, 0x00, 0x00, 0x08, 0x00])

モジュールを使用する方が便利だと思いbase64ます...

# Python 3
key = base64.b16decode(b'130000000800')

# Python 2
key = base64.b16decode('130000000800')

リテラルを使用することもできます...

# Python 3
key = b'\x13\0\0\0\x08\0'

# Python 2
key = '\x13\0\0\0\x08\0'
于 2011-09-11T18:50:03.100 に答える
35

bytearrayバイトの可変シーケンスを表す(Python 2.6以降)を使用するだけです

>>> key = bytearray([0x13, 0x00, 0x00, 0x00, 0x08, 0x00])
>>> key
bytearray(b'\x13\x00\x00\x00\x08\x00')

インデックス付けは、個々のバイトを取得および設定します

>>> key[0]
19
>>> key[1]=0xff
>>> key
bytearray(b'\x13\xff\x00\x00\x08\x00')

str(またはPython 3で)必要な場合は、次bytesのように簡単です。

>>> bytes(key)
'\x13\xff\x00\x00\x08\x00'
于 2011-09-11T19:06:55.797 に答える
5

出力を簡単にログに記録するという追加の利点もある代替手段:

hexs = "13 00 00 00 08 00"
logging.debug(hexs)
key = bytearray.fromhex(hexs)

次のような簡単な置換を行うことができます。

hexs = "13 00 00 00 08 {:02X}".format(someByte)
logging.debug(hexs)
key = bytearray.fromhex(hexs)
于 2015-07-11T16:27:12.337 に答える
3

ディートリッヒの答えは、おそらくあなたが説明するものに必要なものであり、バイトを送信しますが、たとえば、提供したコードに近いものは、bytearray型を使用することです。

>>> key = bytearray([0x13, 0x00, 0x00, 0x00, 0x08, 0x00])
>>> bytes(key)
b'\x13\x00\x00\x00\x08\x00'
>>> 
于 2011-09-11T18:58:18.423 に答える