【发布时间】:2011-01-21 16:28:57
【问题描述】:
.NET 中是否有内置类或其他东西可以让我将字节数组视为大位域?
【问题讨论】:
标签: c# .net bit-fields
.NET 中是否有内置类或其他东西可以让我将字节数组视为大位域?
【问题讨论】:
标签: c# .net bit-fields
看看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
【讨论】:
BitArray 在内部使用int[] 数组,但我不确定您如何知道或关心它使用什么字节序。当然,从语义的角度来看,它只是 bool 的数组。
Console.WriteLine(new BitArray(new byte[] { 1 }).Get(0)); 打印“True”表示(?)它存储字节在大端...
System.Diagnostics.Trace.WriteLine(new BitArray(new byte[1] { 0 }).Get(0));