Bonjour,
Un petit exemple simple:
1 2 3
| chaine='101011010010000110010'
with open("/tmp/yy", "wb") as fd:
fd.write(bytearray([int(x,2) for x in [chaine[x:x + 8] for x in range(0, len(chaine), 8)]])) |
ce qui donne pour le fichier:
1 2 3 4
| $ du -b /tmp/yy
3 /tmp/yy
$ xxd -b /tmp/xx
00000000: 10101101 00100001 00010010 .!. |
La valeur de la chaine en octet est: 10101101 00100001 xxx10010.
Sur le dernier octet les xxx représentent les zéros en rouge qui sont en fait le padding toujours sur le dernier octet (car on ne peut écrire que des octets entiers dans un fichier).
Si tu veux que le padding se fasse du coté gauche de la "chaine", il faut donc que tu la remplisse de zero de ce coté gauche pour qu'elle ait un multiple de 8 de caractère et donc, dans l'exemple il faudrait que la chaine ressemble à:
chaine='000101011010010000110010'
Partager