私は0~0x1FF(9-bit)
と1の間の変数が0~0xF(4-bit)
の間にあり、それらをバイナリにパックしたいと思っています。いつものように、最初の4つをpack('H', var)
(符号なし短い、16ビット)でパックし、最後のパックをpack('B', var)
(符号なしの文字列、8ビットの)でパックします。私は32ビットを無駄にPythonの5 8ビット変数に4 9ビットと1 4ビットのint変数をパックする方法は?
4 * 9 + 1 * 4
、および:私はちょうど40ビットを必要とする、私の記憶は非常に非常に貴重である:私は特別な状況に直面しています
16 * 4 + 8 = 72
を:
ので、私は費用がかかります私が32ビットを無駄にするたびに、たくさんのデータをパックするため、これらの32ビットは私にとって重要なものになります。
実際、4ビットの変数と1の4ビットの変数を5つの8ビット変数(符号なしのchar)に変更することができます。その後、すべてをpack('B', var)
でパックします。もちろん32ビットを保存します。
4 * 9 + 1 * 4 == 5 * 8
どのように私は単にパック4 9ビットの変数と1 4ビットの変数INT 5、8ビットの変数を変更できますか?
1)スパムタグは使用しないでください!これはCとは関係ありません。2)ビットを使用します。 – Olaf