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