gpt4 book ai didi

c# - 在字节数组中设置特定位

转载 作者:太空狗 更新时间:2023-10-29 18:00:42 28 4
gpt4 key购买 nike

我想知道如何设置 16 字节数组(128 位)中的特定位。

例如...如果我想设置数组中的第 9 位,我会期望:

{00, 80, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00}

如果我想设置第125位...

{00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 08}

我研究过位移位的使用,但对如何对由 128 位组成的数组进行位移位感到困惑。有没有办法分解这个大小的数组并以更小的字节 block 进行评估?任何帮助将不胜感激。

最佳答案

选择特定位的过程包括两个步骤:

  • 选择字节,然后
  • 选择位。

选择字节很简单:您需要做的就是将位索引除以字节中的位数 - 即除以八:

int byteIndex = bitIndex / 8;

既然您知道要使用哪个字节,那么请计算您要访问的位。为此,您需要计算除以 8 的余数,如下所示:

int bitInByteIndex = bitIndex % 8;

有了这两个索引,访问这个位就很容易了:使用1 << bitInByteIndex作为面具,像这样:

byte mask = (byte)(1 << bitInByteIndex);
bool isSet = (bytes[byteIndex] & mask) != 0;
// set to 1
bytes[byteIndex] |= mask;
// Set to zero
bytes[byteIndex] &= ~mask;
// Toggle
bytes[byteIndex] ^= mask;

关于c# - 在字节数组中设置特定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21408109/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com