2009-07-17 5 views
5

ビットマップメッセージを処理するTCPベースのアプリケーションで作業しています。つまり、送受信されるメッセージはバイト単位ではありません。たとえば、3ビットはフィールド1を表し、19ビットはフィールド2を表すことがあります。私の質問は、誰もがC#ライブラリを知っていて、バイトセットを取ることができ、それらのバイト内に任意のビット範囲を設定/私は&がC/C++で同様のユーティリティを作成したのを見てきましたが、私は100%C#の解決策が必要で、私は再びホイールを再発明したくありません。C#を使用してビットパックデータを管理する

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

答えて

3

チェックアウトthis CodeProject solutionを - それは、オープンソースは、C#から呼び出し可能なビットストリームクラスを管理しています。

+0

パーフェクト。まさに私が探していたもの。 – nathan

2

私は、あなたが望むものを提供するbclクラスは認識していません。しかし、ビット単位の操作(shift、and、or、...)を使って興味のあるフィールドを抽出することができます。例えば

は、使用フィールドは5ビットのサイズとビット2から始まる取得する:

int extract = (source & 0x7C) >> 2; 
+0

これは現在のC++実装で使用しているメソッドです。実装をC#に移植する必要がなく、サードパーティ製のライブラリを使用できることを期待していました。私はこれを達成するためにいくつかの滑らかなC#ライブラリに興味があります。私はちょうど "ホイールを再発明"したくなかった。 – nathan

関連する問題