当我在程序中使用setall时:
BitArray bb = new BitArray(8) ;
bb.SetAll( true);
int[] dd = new int[1];
bb.CopyTo(dd, 0);
for (int i = 0; i < dd.Length; i++)
Console.WriteLine(dd[i]);
// result is -1
Run Code Online (Sandbox Code Playgroud)
但如果我为bitarray的每个元素使用set
BitArray bb = new BitArray(8) ;
bb.Set( 0,true);
bb.Set(1, true);
bb.Set(2, true);
bb.Set(3, true);
bb.Set(4, true);
bb.Set(5, true);
bb.Set(6, true);
bb.Set(7, true);
int[] dd = new int[1];
bb.CopyTo(dd, 0);
for ( int i = 0; i < dd.Length; i++)
Console.WriteLine(dd[i]);
// result is 255
Run Code Online (Sandbox Code Playgroud)
当使用设置结果为-1并且在第二个程序结果中使用setall为255时,为什么两个程序中的不同结果?
BitArray bits=new BitArray(16); // size 16-bit
Run Code Online (Sandbox Code Playgroud)
有 bitArray,我想在 C# 中将此数组中的 16 位转换为无符号整数,我不能使用 copyto 进行转换,是否还有其他方法可以从 16-bitto 转换为UInt16?
如果有两个数组,第一个数组大小为 100 位,第二个数组大小为 32 位,我想在第一个数组 100 位中搜索 32 位数组
BitArray bits = new BitArray(100);
BitArray bitss = new BitArray(32);
bitss.Set(16,true);
bitss.Set(25,true);
bitss.Set(26,true);
bitss.Set(28,true);
bitss.Set(29,true);
bitss.Set(31,true);
for (int i = 0; i < (bits.Length)-1;i++ )
if ((bits[i] == bitss[0] &&
bits[i + 1] == bitss[1] &&
bits[i + 2] == bitss[2] &&
bits[i + 3] == bitss[3] &&
...
bits[i + 31] == bitss[31]))
Console.WriteLine("Found");
Run Code Online (Sandbox Code Playgroud)
是否有更好的方法在 C# 中不使用( if 和 == )在位数组中搜索位数组