如何设置字节数组中的每个位

本文关键字:数组 字节数 字节 何设置 设置 | 更新日期: 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。