5

私はビットパックされたメッセージを処理するTCPベースのアプリケーションに取り組んでいます。つまり、送受信されるメッセージはバイトアラインされていません。たとえば、3ビットはフィールド1を表し、19ビットはフィールド2を表します。私の質問は、バイトのセットを取り、それらのバイト内の任意の範囲のビットを設定/取得できるC#ライブラリを知っている人はいますか?私はC/C ++で同様のユーティリティを見て作成しましたが、100%C#ソリューションが必要であり、車輪の再発明をやり直したくありません。

BitArrayクラスを見てきましたが、任意の範囲のビットを参照することはできません。

4

2 に答える 2

3

この CodeProject ソリューションを確認してください。これは、C# から呼び出し可能なオープン ソース マネージド BitStream クラスです。

于 2009-07-17T19:39:46.117 に答える
2

あなたが望むものを提供するbclクラスを知りません。ただし、ビット演算 (シフト、および、または、...) を使用して、関心のあるフィールドを抽出できます。

たとえば、ビット 2 から始まるサイズが 5 ビットのフィールドを取得するには、次のようにします。

int extract = (source & 0x7C) >> 2;
于 2009-07-17T19:35:25.127 に答える