Ich habe 4 Variable zwischen 0~0x1FF(9-bit)
und 1 Variable zwischen 0~0xF(4-bit)
und ich möchte sie in Binärdatei packen. Wie üblich werde ich die ersten vier mit pack('H', var)
(unsigned kurz, 16-Bit) packen, dann packen Sie die letzte mit pack('B', var)
(unsigned char, 8-bit).wie 4 4-Bit-int-Variable in 5 8-Bit-Variable in Python packen?
so werde ich kosten 72 bits
:
16 * 4 + 8 = 72
ich eine besondere Situation bin vor: meine Lagerung sehr, sehr wertvoll ist, ich brauche nur 40 Bits:
4 * 9 + 1 * 4
I 32 Bits vergeuden, und auch diese 32 bit können mir wichtig sein, da ich viele daten packen muss, jedes mal wenn ich 32 bits verschleudere, beschwert sich mein speicher endlich bei mir.
In der Tat kann ich 4 9-Bit-Variable und 1 4-Bit-Variable in 5 8-Bit-Variable (unsigned char) ändern, dann packe ich sie alle mit pack('B', var)
, natürlich speichere ich 32 Bits.
4 * 9 + 1 * 4 == 5 * 8
Wie kann ich einfach Pack 4 9-Bit-Variable und 1 4-Bit-Variable int 5 8-Bit-Variable ändern?
1) Keine Spam-Tags! Dies hängt nicht mit C zusammen. 2) Verwenden Sie Bitops. – Olaf