2009-09-13 8 views

risposta

7

Si potrebbe definirlo come stringa e poi analizzarlo:

myBin = Convert.ToInt32("1010101010", 2) 
5

Non è così.

VB.NET supporta decimale (senza prefisso), ottale (con &O prefisso), ed esadecimale (con &H prefisso) integer literals direttamente.

5

Ampliando la risposta di codymanix ... Si potrebbe avvolgere questo in un estensione ad Archi, e aggiungere il controllo di tipo ...
qualcosa insieme le linee di:

<Extension> Public Function ParseBinary(target As String) As Integer 
    If Not RegEx.IsMatch(target, "^[01]+$") Then Throw New Exception("Invalid binary characters.") 

    Return Convert.ToInt32(target, 2) 
End Function 

Questo permette quindi, ovunque ci sia una stringa di valore binario, dicono "100.101.100.101", si può fare:

Dim val As Integer = "100101100101".ParseBinary() 

Nota che per utilizzare l'estensione < >, è necessario importare System.Runtime.CompilerServices ed essere in esecuzione su Framework 3.5 o successivo.

+1

Sembra molto utile. Mi piacerebbe poter aggiornare a 3.5 –

+1

Yah, tra estensioni, LINQ e letterali XML, ... 3.5 spazza via 2.0! :) – eidylon

3

A partire dal 15 VB.NET v'è ora il supporto per letterali binari:

Dim mask As Integer = &B00101010 

È possibile anche includere trattini come separatori numerici per rendere il numero più leggibile senza modificare il valore:

Dim mask As Integer = &B0010_1010