Comment puis-je représenter un tableau d'octets (comme dans Java avec byte []) en Python? Je vais devoir l'envoyer par le biais de gevent.
byte key[] = {0x13, 0x00, 0x00, 0x00, 0x08, 0x00};
Dans Python 3, nous utilisons l'objet bytes
, également appelé str
in Python 2.
# 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])
Je trouve plus pratique d'utiliser le base64
module ...
# Python 3
key = base64.b16decode(b'130000000800')
# Python 2
key = base64.b16decode('130000000800')
Vous pouvez également utiliser des littéraux ...
# Python 3
key = b'\x13\0\0\0\x08\0'
# Python 2
key = '\x13\0\0\0\x08\0'
Utilisez simplement un bytearray
(Python 2.6 et ultérieur) qui représente une séquence d'octets modifiable
>>> key = bytearray([0x13, 0x00, 0x00, 0x00, 0x08, 0x00])
>>> key
bytearray(b'\x13\x00\x00\x00\x08\x00')
Indexation get et définit les octets individuels
>>> key[0]
19
>>> key[1]=0xff
>>> key
bytearray(b'\x13\xff\x00\x00\x08\x00')
et si vous en avez besoin en tant que str
(ou bytes
in Python 3), c'est aussi simple que
>>> bytes(key)
'\x13\xff\x00\x00\x08\x00'
Une alternative qui présente également l’avantage supplémentaire de pouvoir facilement enregistrer sa sortie:
hexs = "13 00 00 00 08 00"
logging.debug(hexs)
key = bytearray.fromhex(hexs)
vous permet de faire des substitutions faciles comme ceci:
hexs = "13 00 00 00 08 {:02X}".format(someByte)
logging.debug(hexs)
key = bytearray.fromhex(hexs)
La réponse de Dietrich est probablement ce dont vous avez besoin pour décrire ce que vous décrivez, l'envoi d'octets, mais un analogue plus proche du code que vous avez fourni, par exemple, utiliserait le type bytearray
.
>>> key = bytearray([0x13, 0x00, 0x00, 0x00, 0x08, 0x00])
>>> bytes(key)
b'\x13\x00\x00\x00\x08\x00'
>>>