Question

Comment puis-je représenter un tableau d'octets (comme en java avec octet []) en python? Je devrai l'envoyer sur le fil avec Gevent.

byte key[] = {0x13, 0x00, 0x00, 0x00, 0x08, 0x00};
Était-ce utile?

La solution

Dans Python 3, nous utilisons le bytes objet, également connu sous le nom 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'

Autres conseils

Utilisez simplement un bytearray (Python 2.6 et plus tard) qui représente une séquence mutable d'octets

>>> 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 comme un str (ou bytes Dans Python 3), c'est aussi simple que

>>> bytes(key)
'\x13\xff\x00\x00\x08\x00'

Une alternative qui a également l'avantage supplémentaire de connecter facilement sa sortie:

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

vous permet de faire des substitutions faciles comme tel:

hexs = "13 00 00 00 08 {:02X}".format(someByte)
logging.debug(hexs)
key = bytearray.fromhex(hexs)

La réponse de Dietrich est probablement juste la chose 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 le bytearray taper.

>>> key = bytearray([0x13, 0x00, 0x00, 0x00, 0x08, 0x00])
>>> bytes(key)
b'\x13\x00\x00\x00\x08\x00'
>>> 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top