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 e nel secondo argomento la rappresentazione numerica nella quale convertire il valore 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