Tableau d'octets en Python
Comment puis-je représenter un tableau d'octets (comme en Java avec byte[]) en Python? Je vais avoir besoin de l'envoyer sur le fil avec gevent.
byte key[] = {0x13, 0x00, 0x00, 0x00, 0x08, 0x00};
Vous devez vous connecter pour publier un commentaire.
En Python 3, nous utilisons la
bytes
objet, aussi connu commestr
en Python 2.Je le trouve plus pratique d'utiliser le
base64
module...Vous pouvez également utiliser les littéraux...
base64.b16decode(x)
, vous pouvez l'utiliser, il suffit,x.decode("hex")
. Il vous permet d'obtenir par avec un de moins à l'importation, au moins. 🙂Il suffit d'utiliser un
bytearray
(Python 2.6 et plus tard), ce qui représente une mutable séquence d'octetsIndexation obtenir et définit les octets individuels
et si vous en avez besoin comme un
str
(oubytes
en Python 3), c'est aussi simple quefubar = str(key); print(len(key), len(fubar))
produit6 38
. Dans tous les cas (1) "chaîne" est très vague de la terminologie (2) s'il veut de la mutabilité, il peut muter son original listestr
travailler différemment pourbytearray
en Python 3 - fixe. J'ai mentionné la mutabilité principalement pour la distinguer debytes
, mais le point est que vous n'avez pas besoin d'avoir une étape intermédiaire de vos données dans unlist
à tous.struct.pack("<IH", 19, 8)
...Une alternative qui a aussi l'avantage de facilement journalisation sa sortie:
vous permet de faire facilement des substitutions comme suit:
De Dietrich réponse est probablement juste la chose dont vous avez besoin pour ce que vous décrivez, l'envoi d'octets, mais de plus près l'analogique vers le code que vous avez fourni pour exemple serait d'utiliser le
bytearray
type.bytearray
est vraiment la voie à suivre si vous le souhaitez, er, un tableau d'octets.bytearray('b', ...)
ne fonctionne pas. Ou vous pouvez simplement le supprimer.