使用vb.net获取和设置字节数组中的单个位

时间:2011-07-05 16:48:23

标签: vb.net byte bit masking

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

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

因此,如果我有一个类似& B00110011的字节,并希望将第三位更改为1,那么它应该是& B00110111。

像这样:

将myarray(511)变暗为字节

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

我知道使用位掩码应该很容易,但是我没有时间尝试使用它。

感谢您的帮助!!!

2 个答案:

答案 0 :(得分:4)

一种简单的方法是使用轮班。如果要将数字的第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

答案 1 :(得分:1)

为什么不使用BitArray class