如何设置字节数组中的每个位
本文关键字:数组 字节数 字节 何设置 设置 | 更新日期: 2023-09-27 18:05:56
如何将以下字节数组中的每个位设置为21字节或168位为零或1 ?
byte[] logonHours
非常感谢
可以使用Array.Clear
:
Array.Clear(logonHours, 0, logonHours.Length);
设置每个位稍微硬:
for (int i = 0; i < logonHours.Length; i++)
{
logonHours[i] = 0xff;
}
如果你发现自己经常填充数组,你可以写一个扩展方法:
public static void FillArray<T>(this T[] array, T value)
{
// TODO: Validation
for (int i = 0; i < array.Length; i++)
{
array[i] = value;
}
}
BitArray。SetAll:
System.Collections.BitArray a = new System.Collections.BitArray(logonHours);
a.SetAll(true);
注意,这会从字节数组复制数据。它不只是一个包装
这可能比你需要的更多,但是…
通常在处理任何数据类型中的单个位时,我为每个位位置定义一个const,然后使用二进制操作符|、&和^.
。
const byte bit1 = 1;
const byte bit2 = 2;
const byte bit3 = 4;
const byte bit4 = 8;
.
.
const byte bit8 = 128;
然后你可以使用位操作打开或关闭任何你想要的位。
byte byTest = 0;
byTest = byTest | bit4;
将打开第4位,但其余位保持不变。
你会使用&和^关闭它们或做更复杂的练习。
显然,因为你只想把所有的位都调高或调低,那么你可以把字节设置为0或255。