以下のような API を使用して、bytearray 内の特定のビットを変更できるヘルパー クラスを探しています。
void Set(int startPos, int lengthInBits, int value) {
// Set the bits starting at startPos to the binary representation of value
// Error if the binary representation of value is too long (ie. exceeds lengthInBits)
}
目的は、任意の長さの特定の値を bytearray に入れることができるようにすることです。一部の値の長さは 1 バイト未満であり、他の値はそれ以上になり、一部の値はバイトを「またぐ」ことになります。
私はByteBufferを見てきましたが、これは少しレベルが高すぎるようで、最大ビット数を選択させるのではなく、バイト全体を配置し、int と short を複数のバイトに変換するだけで動作します。
BitSetも調べましたが、今回は単一ビット レベルでしか機能しないため、少しレベルが低すぎるように見えます (ただし、上記の種類の API を使用して何かを構築するための出発点としてこれを使用できる可能性があります)。
主に符号付き/符号なしビットの使用に関連する、スタックオーバーフローに関する古いやや似た質問もありますが、描かれているデータ構造は、私が構築しようとしている種類のものです (外部クライアントに送信するメッセージ)、およびビットシフトの複雑さを可能な限り隠したいと思います。