2010-10-28 4 views
4

Я хочу выполнить побитовое И-операцию в VB.NET, взяв короткую (16-разрядную) переменную и ИСПОЛЬЗУЯ ее с «0000000011111111» (тем самым сохраняя только наименее значимые байты/8 младших бит).Как я могу выполнить побитовое-операцию в VB.NET?

Как я могу это сделать?

+0

Вы выполняете конкатенацию строк или условия IF? – DOK

+0

Можете ли вы дать psudo код того, что вы пытаетесь? – Iain

+0

Без декомпрессионного звука. – Barun

ответ

10

0000000011111111 представлен как VB шестнадцатеричном литерала & HFF (или & H00FF, если вы хотите быть явным), а обычный оператор И is actually a bitwise operator. Таким образом, чтобы замаскировать верхние байты коротких вы бы написать:

shortVal = shortVal AND &HFF 

Для более творческих способов получения двоичных констант в VB, см: VB.NET Assigning a binary constant

+0

Могу ли я использовать & H00FF ... что такое разница с & HFF и & H00ff – Barun

+0

@Barun: ведущие 0s являются излишними. Используйте их, если хотите ... Это не имеет значения. – Shog9

2

Используйте оператор And и написать буквальный в шестнадцатеричном формате (простое преобразование из двоичных):

theShort = theShort And &h00ff 

Если то, что вы на самом деле пытаетесь сделать, это разделить короткую в байты, есть a built in method для этого:

Dim bytes As Byte() = BitConverter.GetBytes(theShort) 

Теперь у вас есть массив с двумя байтами.

-4
result = YourVar AND cshort('0000000011111111') 
+2

Строки разделены кавычками, а не апострофами. Функция CShort не принимает двоичный базис, а десятичную, поэтому попытка преобразования этой строки вызывает переполнение. – Guffa

Смежные вопросы