次のような64ビットのデータ構造があります。
HHHHHHHHHHHHHHGGGGGGGGGGGGFFFEEEEDDDDCCCCCCCCCCCCBAAAAAAAAAAAA
A: 12 ビット (符号なし)
B: 1 ビット
C: 12 ビット (符号なし)
D: 4 ビット (符号なし)
E: 4 ビット (符号なし)
F: 3 ビット (符号なし)
G: 12 ビット (符号なし)
H: 16 ビット(無署名)
Python を使用して、どのモジュール (できればネイティブの Python 3.x) を使用する必要があるかを判断しようとしています。私はBitVectorを見ていますが、いくつかのことを理解するのに苦労しています。
使いやすくするために、次のようなことができるようにしたいと考えています。
# To set the `A` bits, use a mapped mask 'objectId'
bv = BitVector(size=64)
bv['objectId'] = 1
BitVector が実際に希望どおりに機能するかどうかはわかりません。最終的に実装するモジュールが何であれ、データ構造は、プロパティのゲッター/セッターを介して構造を読み書きするクラスにカプセル化されます。
一部のビット値には定数 (または列挙型) も使用します。次のようなものを使用してマップされたマスクを設定できると便利です。
# To set the 'B' bit, use the constant flag to set the mapped mask 'visibility'
bv['visibility'] = PUBLIC
print(bv['visibility']) # output: 1
# To set the 'G' bits, us a mapped mask 'imageId'
bv['imageId'] = 238
この目標を達成するのに役立つ 3.x の Python モジュールはありますか? BitVector が機能する (または機能する必要がある) 場合は、役立つヒント (例など) をいただければ幸いです。BitVector は、私のアプリケーション (IMHO) にとって理想的ではない 8 ビット形式にすべてを強制したいと考えているようです。