Pythonでバイト配列(byte []でJavaのように)を表現するにはどうすればよいですか?それをgeventで送信する必要があります。
byte key[] = {0x13, 0x00, 0x00, 0x00, 0x08, 0x00};
Python 3では、Python 2でbytes
とも呼ばれる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'
可変バイトシーケンスを表す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'
出力を簡単に記録するという追加の利点もある代替手段:
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)
ディートリッヒの答えはおそらくあなたが説明するものに必要なものであり、バイトを送信しますが、たとえばあなたが提供したコードに近いものはbytearray
タイプを使用することです。
>>> key = bytearray([0x13, 0x00, 0x00, 0x00, 0x08, 0x00])
>>> bytes(key)
b'\x13\x00\x00\x00\x08\x00'
>>>