2017-01-05 7 views
0

MPEG 2 Transport Stream packetを表すクラスを作成したいとします。 13ビットのPID値を格納するクラスプロパティが必要ですか?最良のデータ型は何でしょうか?この値を保存するためにマスクを使用しますか?私は値をintに変換しなければならないと思っています...それは最も簡単な解決策でしょうか?あなたはバイトではないビットの異なる数をどのように保存しますか?13ビット構造を保存するには?

public class Mpeg2TransportPacket 
{ 
    byte SyncByte { get; set; } 
    bool TransportErrorIndicator { get; set; } 
    bool PayloadUnitStartIndicator { get; set; } 
    bool TransportPriority { get; set; } 

    int PID { get; set; } 
} 
+1

マスクと&操作を使用する13ビットをマスクする必要がある場合、' short'( 'Int16')は16ビットです。 3つのスペアビットを使って 'short'を使うことができます。 – Amy

+1

私は 'short'に変換します。 –

+0

あなたが6バイトに格納された33ビットptsになるまでお待ちください:) – szatmary

答えて

3

私はSystem.Int16がうまくいくと思います。

あなたは `byte`が8ビットである

var mask = 0b0001_1111_1111_1111; // c# v7.0 binary literal, low order bits 
var pid = value & mask; // value is what you are applying the mask to 
0

私はBitArrayクラスにPIDを格納し、より良いパフォーマンスのために、このようなクラス

から読み取り、書き込みするためにあなたのクラス/の各ブールプロパティをマップする、BitVector32を使用しています。

関連する問題