使用 vb.net 获取和设置字节数组中的单个位
我有一个包含 512 个元素的字节数组,需要获取和设置该数组中一个字节的一位。
该操作不得更改任何其他位,只能更改指定的位。
因此,如果我有一个像 &B00110011 这样的字节,并且想将第三位更改为 1,那么它应该是 &B00110111。
像这样:
Dim myarray(511) as byte
myarray(3).2 = 1 --->这会将第三个字节的第三位(从 0 开始计数)更改为 1
我知道使用位掩码应该很容易实现,但我没有时间尝试几天来让它工作。
感谢您的帮助!
扬
I have a byte array with 512 Elements and need to get and set a single bit of a byte in this array.
The operation must not change any other bits, only the specified one.
So if I have a byte like &B00110011 and would like to change the third bit to 1 it should be &B00110111.
Like this:
Dim myarray(511) as byte
myarray(3).2 = 1 ---> This would change the third bit (start counting at 0) of the third byte to 1
I know it should be easily possible using bit-masking but I don't have the time to try for days to get it working.
Thanks for help!!!
Jan
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
一个简单的方法是使用轮班。如果要将数字的第 N 位设置为 1:
将某个位设置为 0:
在这两个示例中,
bytevalue
是要更改的字节,mask
> 也是一个字节。编辑:轻松检索位的状态很像设置位,其中 IsSet 是布尔值:
A simple way to do this is using shifts. If you want to set the Nth bit of a number to 1:
To set a bit as 0:
In both examples,
bytevalue
is the byte in which you want to alter andmask
is also a byte.EDIT: To retrieve the state of a bit easily is a lot like setting a bit, Where IsSet is a boolean:
为什么不使用 BitArray 类?
Why don't you use the BitArray class?