2010-10-28 29 views
4

Je souhaite effectuer une opération AND binaire dans VB.NET, en prenant une variable courte (16 bits) et en l'affectant avec '0000000011111111' (en ne conservant que l'octet le moins significatif/8 bits les moins significatifs).Comment puis-je effectuer une opération AND au niveau du bit dans VB.NET?

Comment puis-je le faire?

+0

Effectuez-vous une concaténation de chaînes ou des conditions IF? – DOK

+0

pouvez-vous donner le code psudo de ce que vous essayez? – Iain

+0

Aucun son de décompression. – Barun

Répondre

10

0000000011111111 représentée comme un hexagone VB littéral est & HFF (ou & H00FF si vous voulez être explicite), et l'ordinaire et l'opérateur is actually a bitwise operator. Donc, pour masquer l'octet haut d'un court vous écririez:

shortVal = shortVal AND &HFF 

Pour des moyens plus créatifs d'obtenir une constante binaire en VB, voir: VB.NET Assigning a binary constant

+0

puis-je utiliser & H00FF ... quelle est la différence avec & HFF et & H00ff – Barun

+0

@Barun: les 0 principaux sont superflus. Utilisez-les si vous voulez ... Ça ne fait aucune différence. – Shog9

2

Utilisez l'opérateur And et écrire le littéral en hexadécimal (conversion facile de binaire):

theShort = theShort And &h00ff 

Si ce que vous essayez vraiment faire est de diviser le court en octets, il est a built in method pour que:

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

Vous avez maintenant un tableau avec deux octets.

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

Les chaînes sont délimitées par des guillemets et non par des apostrophes. La fonction CShort ne suppose pas binaire comme base, mais décimal, donc essayer de convertir cette chaîne provoque un débordement. – Guffa