c# - 我应该如何从位创建字节?

标签 c# bit-manipulation

<分区>

我正在开发将通过 RTP 发送数据的应用程序,但我几乎从未使用过字节。现在我正在尝试使用 BitArray:

byte[] toSend = new byte[12];
BitArray b = new BitArray(new int[] { 2 });
b.CopyTo(toSend, 0);

但它适用于 Int32,因此 2 表示为 0100..0,这不是我需要的。我在这里有 2 个问题:

  1. 我应该如何将 2|1|1|4 位组合成一个字节?我认为应该有这样的东西:

    int version = 2;//2 bits
    int padding = 0;//1 bit
    int extension = 0;//1 bit
    int ccrc = 0;//4 bits
    
    byte[] toSend = new byte[1]{version+padding+extension+ccrc};
    
  2. 对于一些 header 有 16 位保留,所以我需要一些东西 像这样:0000000000000000(16),但我不知道如何创建这种变量,以及如何将 16 位写入两个字节。

最佳答案

如果我没理解错的话,你是想从位创建一个字节。

为什么不使用一个函数来获取字节、位值和放置位的位置,如解释的那样here

关于c# - 我应该如何从位创建字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42368942/

相关文章:

mysql - 如何使用 MySQL 存储和改变位图/位集?

c# - 如何清除最高有效位?

elixir - 如果我在尝试构建 Elixir 位串时指定现有位串的大小,则会出现参数错误

ios - 按位运算符在 Playground 上给出不同的结果

c++ - 位窗口操作

c# - EF Core 到 Mysql 表绑定(bind)

C# 将图像添加到电子邮件正文

c# - Microsoft NuGet 包发行说明

c# - 在 Linq to SQL 中按一年中的一周(周数)分组

c# - Unity 中的相机 Controller