字节数组作为C#中的位域?

Ano*_*non 5 .net c# bit-fields

.NET中是否有内置类或某些东西可以将字节数组视为大位域?

SwD*_*n81 7

看看BitArray类.

下面是一个示例,说明使用字节数组时发生的情况:

byte[] myBytes = new byte[5] { 1, 2, 3, 4, 5 };
BitArray myBA3 = new BitArray( myBytes );

Console.WriteLine( "myBA3" );
Console.WriteLine( "   Count:    {0}", myBA3.Count );
Console.WriteLine( "   Length:   {0}", myBA3.Length );
Console.WriteLine( "   Values:" );
PrintValues( myBA3, 8 );

public static void PrintValues( IEnumerable myList, int myWidth )
{
   int i = myWidth;
   foreach ( Object obj in myList )
   {
      if ( i <= 0 )
      {
         i = myWidth;
         Console.WriteLine();
      }
      i--;
      Console.Write( "{0,8}", obj );
   }
   Console.WriteLine();
}
Run Code Online (Sandbox Code Playgroud)

此代码生成以下输出.

 myBA3
    Count:    40
    Length:   40
    Values:
     Bit0   Bit1    Bit2    Bit3    Bit4    Bit5    Bit6    Bit7
     True   False   False   False   False   False   False   False
     Bit8   Bit9    Bit10   Bit11   Bit12   Bit13   Bit14   Bit15 ... and so on
    False    True   False   False   False   False   False   False
     True    True   False   False   False   False   False   False
    False   False    True   False   False   False   False   False
     True   False    True   False   False   False   False   False
Run Code Online (Sandbox Code Playgroud)

  • 你对这是做什么感到困惑.这就是说"创建一个第一个字节值为1的字节数组".BitArray接受该字节并表示,ok值1表示位置零(true).第一位是假的,第二位是假的......第七位是假的.如果要创建一个带有一个字节的emtpy BitArray,请执行以下操作:`System.Diagnostics.Trace.WriteLine(new BitArray(new byte [1] {0}).Get(0));` (3认同)