Convertire un numero da rappresentazione binaria in decimale
Indice
Conversione con la funzione "Dec()"
Si potrà usare la funzione nativa "Dec()", impostando nel primo argomento il numero binario da convertire in rappresentazione decimale e nel secondo argomento la base numerica del valore da convertire (2 = binario).
Dim bin As String = "1111111111111111" Print Dec(bin, 2)
Conversione con i caratteri &x
Una modalità rapida, per effettuare la conversione dalla rappresentazione binaria in quella decimale, è di anteporre alla rappresentazione binaria i simboli &x, come segue:
Print &x11111110
oppure, avendo la rappresentazione binaria in formato stringa, è di usare la funzione "Val()" e i predetti caratteri &x:
i = Val("&x11111110")
Avendo il valore binario contenuto in una variabile
Dim bin As String = "11111110" Print Val("&x" & bin)
Dim bin As String = "1111111111111111" Val("&x" & bin & "&")
Conversione con il carattere %
Un'altra modalità prevede l'uso del carattere %, anteponendolo alla rappresentazione binaria del valore da convertire:
Print %11111110
oppure, avendo la rappresentazione binaria in formato stringa, l'uso della funzione nativa "Val()" anteponendo alla stringa di caratteri della rappresentazione binaria il carattere %:
Print Val("%11111110")
Avendo il valore binario contenuto in una variabile
Dim bin As String = "11111110" Print Val("%" & bin)
Dim bin As String = "1111111111111111" Val("%" & bin & "&")
Uso della funzione esterna "strtol()"
La funzione "strtol()", dichiarata nel file header /usr/include/stdlib.h, converte un numero da rappresentazione stringa in un valore di tipo "long int ", come definito nel file header /usr/include/limits.h .
Dunque si passerà a detta funzione esterna una stringa contenente la rappresentazione binaria del valore da convertire, avendo cura di porre il terzo parametro della funzione medesima a 2 (base binaria).
Mostriamo un semplice esempio:
Library "libc:6" ' long int strtol (const char *__restrict __nptr, char **__restrict __endptr, int __base) ' Convert a string to a long integer. Private Extern strtol(__nptr As String, __endptr As Pointer, __base As Integer) As Long Public Sub Main() Dim binario As String Dim l As Long ' Come esempio passiamo la rappresentazione binaria del valore massimo supportato dal tipo "Long" nativo di Gambas: 9223372036854775807 binario = "111111111111111111111111111111111111111111111111111111111111111" l = strtol(binario, 0, 2) Print l End