Conversione da Decimale a Binario e viceversa

 

Questa Funzione converte un numero da Decimale a Binario.

'*********************************************
'Converte da Decimale a Binario
'valore = valore decimale da convertire
'*********************************************

Function Binario(ByVal valore As Long) As String
    Dim result As String, esponente As Integer
    result = String$(32, "0")
    Do
        If valore And Potenza2(esponente) Then
            Mid$(result, 32 - esponente, 1) = "1"
            valore = valore Xor Potenza2(esponente)
        End If
        esponente = esponente + 1
    Loop While valore
    Binario = Mid$(result, 33 - esponente)
End Function

Questa Funzione converte un numero da Binario a Decimale.

'*********************************************
'Converte da Binario a Decimale
'valore = valore binario da convertire
'*********************************************

Function BinToDec(valore As String) As Long
Dim result As Long, i As Integer, esponente As Integer
For i = Len(valore) To 1 Step -1
Select Case Asc(Mid$(valore, i, 1))
Case 48 ' "0", non fai niente
Case 49 ' "1", aggiungi la corrispettiva potenza di 2
result = result + Potenza2(esponente)
Case Else
Err.Raise 5 ' Chiamata a Procedura non valida
End Select
esponente = esponente + 1
Next
BinToDec = result
End Function

N.B. Entrambi le Funzioni hanno bisogno di quest'altra funzione, che restituisce il valore di 2 elevato ad una determinata potenza.

'*********************************************
'Una routine velocissima che restituisce 2 elevato a N
'con N che deve essere nel range [0-31]
'esponente = l'esponente a cui deve essere elevato 2
'*********************************************

Function Potenza2(ByVal esponente As Long) As Long
    Static result(0 To 31) As Long, i As Integer
    If result(0) = 0 Then
        result(0) = 1
        For i = 1 To 30
            result(i) = result(i - 1) * 2
        Next
        result(31) = &H80000000
'questo è un valore speciale
    End If
    Potenza2 = result(esponente)
End Function

Testato su: Tutti i Sistemi operativi