Получение и установка отдельных битов в байтовом массиве с использованием vb.net - PullRequest
0 голосов
/ 05 июля 2011

У меня есть байтовый массив с 512 элементами, и мне нужно получить и установить один бит байта в этом массиве.

Операция не должна изменять никакие другие биты, кроме указанного.

Так что, если у меня есть такой байт, как & B00110011, и я хочу изменить третий бит на 1, он должен быть & B00110111.

Как это:

Dim myarray (511) как байт

myarray (3) .2 = 1 ---> Это изменит третий бит (начиная с 0) третьего байта на 1

Я знаю, что это легко сделать с помощью битовой маскировки, но у меня нет времени, чтобы несколько дней пытаться заставить его работать.

Спасибо за помощь !!!

Jan

Ответы [ 2 ]

4 голосов
/ 05 июля 2011

Простой способ сделать это - использовать смены.Если вы хотите установить 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 голос
/ 05 июля 2011

Почему бы вам не использовать класс BitArray ?

...