J'ai 4 variable entre 0~0x1FF(9-bit)
et 1 variable entre 0~0xF(4-bit)
et je veux les emballer en binaire. Comme d'habitude, je vais empaqueter les quatre premiers avec pack('H', var)
(non signé court, 16 bits), puis emballer le dernier avec (unsigned char, 8 bits).comment emballer 4 à 9 bits et une variable d'int 4 bits en 5 variable python 8-bit?
donc je Coûtera 72 bits
:
16 * 4 + 8 = 72
Je suis face à une situation particulière: mon stockage est très précieux, j'ai juste besoin de 40 bits:
4 * 9 + 1 * 4
je gaspille 32 bits, et ces 32 bits peut être important pour moi, parce que j'ai beaucoup de données à emballer, chaque fois que je perds 32 bits, enfin, mon stockage se plaint à moi.
En fait, je peux changer 4 variables de 9 bits et 1 variable de 4 bits en 5 variables de 8 bits (char signé), puis je les empaquette tous avec , bien sûr, j'enregistre 32 bits.
4 * 9 + 1 * 4 == 5 * 8
Comment puis-je changer simplement Pack 4 variable et 1 variable de type int 5 Variable 8 bits 4 bits 9 bits?
1) Ne pas les balises de spam! Ceci n'est pas lié à C. 2) Utilise les bitops. – Olaf