Comment puis-je représenter un tableau d'octets (comme en Java avec byte[]) en Python ? J'ai besoin de l'envoyer sur le fil avec gevent.
byte key[] = {0x13, 0x00, 0x00, 0x00, 0x08, 0x00};
Comment puis-je représenter un tableau d'octets (comme en Java avec byte[]) en Python ? J'ai besoin de l'envoyer sur le fil avec gevent.
byte key[] = {0x13, 0x00, 0x00, 0x00, 0x08, 0x00};
En Python 3, nous utilisons la fonction bytes
également connu sous le nom de str
dans 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'
Il suffit d'utiliser un bytearray
(Python 2.6 et ultérieur) qui représente une séquence d'octets mutables
>>> key = bytearray([0x13, 0x00, 0x00, 0x00, 0x08, 0x00])
>>> key
bytearray(b'\x13\x00\x00\x00\x08\x00')
L'indexation permet d'obtenir et de définir les octets individuels
>>> key[0]
19
>>> key[1]=0xff
>>> key
bytearray(b'\x13\xff\x00\x00\x08\x00')
et si vous en avez besoin comme str
(ou bytes
en Python 3), il est aussi simple que
>>> bytes(key)
'\x13\xff\x00\x00\x08\x00'
Une alternative qui présente également l'avantage d'enregistrer facilement ses résultats :
hexs = "13 00 00 00 08 00"
logging.debug(hexs)
key = bytearray.fromhex(hexs)
vous permet de faire des substitutions faciles, par exemple :
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 ce que vous décrivez, l'envoi d'octets, mais un analogue plus proche du code que vous avez fourni par exemple serait d'utiliser la fonction bytearray
type.
>>> key = bytearray([0x13, 0x00, 0x00, 0x00, 0x08, 0x00])
>>> bytes(key)
b'\x13\x00\x00\x00\x08\x00'
>>>
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.