如何存储13位结构?

时间:2017-01-05 15:48:40

标签: c# mpeg2-ts

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

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

    int PID { get; set; }
}

2 个答案:

答案 0 :(得分:3)

对于像我这样的单个值,我认为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

答案 1 :(得分:0)

我会将PID存储到BitArray类中,然后映射类的每个布尔属性以从此类写入/读取

为了获得更好的表现,请使用BitVector32