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

发布于 2024-10-14 01:16:14 字数 40 浏览 5 评论 0原文

.NET 中是否有内置类或其他东西可以让我将字节数组视为大位字段?

Is there a built-in class or something in .NET that would allow me to treat a byte-array as a large bitfield?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

撩动你心 2024-10-21 01:16:14

查看 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();
}

此代码产生以下输出。

 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

Take a look at the BitArray class.

Here is an example explaining what is going on when using a byte array:

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();
}

This code produces the following output.

 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文