如何存储13位结构?

How to store 13-bit structure?

我想创建一个代表 MPEG 2 Transport Stream packet 的 class。我想要一个存储 13 位 PID 值的 class 属性?最好的数据类型是什么?你会用掩码来存储这个值吗?我在想我应该将值转换为 int ...那将是最简单的解决方案,对吧?如何存储不是字节的不同位数?

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

    int PID { get; set; }
}

我会将 PID 存储到 BitArray class 中,然后将 class 的每个布尔值 属性 从这样的 [=17] 映射到 write/read =]

为了获得更好的性能,请使用 BitVector32

对于这样的单个值,我认为 System.Int16 会很好。

如果您需要屏蔽掉 13 位,您将使用屏蔽和 & 操作

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