0

我有一个包含 512 个元素的字节数组,需要在这个数组中获取和设置一个字节的一位。

该操作不得更改任何其他位,只能更改指定的位。

因此,如果我有一个像 &B00110011 这样的字节并且想将第三位更改为 1,它应该是 &B00110111。

像这样:

将 myarray(511) 调暗为字节

myarray(3).2 = 1 ---> 这会将第三个字节的第三位(从 0 开始计数)更改为 1

我知道使用位掩码应该很容易,但我没有时间尝试几天让它工作。

感谢帮助!!!

4

2 回答 2

5

一个简单的方法是使用轮班。如果要将数字的第 N 位设置为 1:

mask = 1 << n ' if n is 3, mask results in 00001000
bytevalue = bytevalue or mask

将位设置为 0:

mask = 255 - (1 << n) ' if n is 3, mask results in 11110111
bytevalue = bytevalue and mask

在这两个示例中,bytevalue是您要更改的字节,mask也是一个字节。

编辑:轻松检索状态很像设置一点,其中 IsSet 是一个布尔值:

mask = 1 << n ' just as above
IsSet = (bytevalue and mask) <> 0
于 2011-07-05T16:57:32.090 回答
1

为什么不使用BitArray 类

于 2011-07-05T16:52:09.633 回答