我有一个包含 512 个元素的字节数组,需要在这个数组中获取和设置一个字节的一位。
该操作不得更改任何其他位,只能更改指定的位。
因此,如果我有一个像 &B00110011 这样的字节并且想将第三位更改为 1,它应该是 &B00110111。
像这样:
将 myarray(511) 调暗为字节
myarray(3).2 = 1 ---> 这会将第三个字节的第三位(从 0 开始计数)更改为 1
我知道使用位掩码应该很容易,但我没有时间尝试几天让它工作。
感谢帮助!!!
简
一个简单的方法是使用轮班。如果要将数字的第 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
为什么不使用BitArray 类?