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

0 vb.net byte bit masking

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

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

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

像这样:

将 myarray(511) 调暗为字节

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

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

感谢帮助!!!

Cor*_*urn 5

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

mask = 1 << n ' if n is 3, mask results in 00001000
bytevalue = bytevalue or mask
Run Code Online (Sandbox Code Playgroud)

将位设置为 0:

mask = 255 - (1 << n) ' if n is 3, mask results in 11110111
bytevalue = bytevalue and mask
Run Code Online (Sandbox Code Playgroud)

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

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

mask = 1 << n ' just as above
IsSet = (bytevalue and mask) <> 0
Run Code Online (Sandbox Code Playgroud)