Convertire un numero da rappresentazione Esadecimale a Decimale
Per ottenere la rappresentazione decimale di un valore, espresso in origine in esadecimale, possiamo utilizzare diverse modalità a seconda delle circostanze.
Indice
- 1 Conversione con la funzione "Dec()"
- 2 Se il valore da convertire in decimale deve essere solamente e direttamente mostrato in console
- 3 Se si deve utilizzare una variabile di tipo stringa, nella quale c'è il puro valore esadecimale in formato stringa
- 4 Se il valore in rappresentazione esadecimale è contenuto in una variabile di tipo Puntatore
- 5 Utilizzando una variabile vettoriale
- 6 Se il valore esadecimale è espresso come stringa e rappresentato come in C dal valore "0x...."
- 7 Note
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 base numerica del valore di partenza da convertire (16 = esadecimale).
Dim esa As String = "abcd" Print Dec(esa, 16)
Se il valore da convertire in decimale deve essere solamente e direttamente mostrato in console
In tal caso possiamo fare semplicemente così:
Public Sub Main() Print &4B56 ' [nota 1] End
Se si deve utilizzare una variabile di tipo stringa, nella quale c'è il puro valore esadecimale in formato stringa
Public Sub Main() Dim s As String = "07A120" Dim i As Integer i = Val("&" & s) Print i End
Se il valore in rappresentazione esadecimale è contenuto in una variabile di tipo Puntatore
Public Sub Main() Dim p As Pointer p = Alloc("03E8") Print Val("&" & String@(p)) Free(p) End
Utilizzando una variabile vettoriale
Public Sub Main() Dim ii As new Integer[] ii.Push(&123456) Print ii[0] End
Se il valore esadecimale è espresso come stringa e rappresentato come in C dal valore "0x...."
In questo caso possiamo usare alcune seguenti modalità:
Public Sub Main() Dim s1, s2 As String s1 = "0x0123" s2 = s1[2, s1.len - 2] Print Val("&" & s2) s2 = Split(s1, "x")[1] s2 = Replace(s1, "0x", "&") Print Val(s2) s2 = Replace(s1, "x", "0") Print Val("&" & s2) s2 = Scan(s1, "0x*")[0] Print Val("&" & s2) End
Note
[1] Per convenzione il carattere "h" è un prefisso che indica l'esadecimale. Solitamente nei linguaggi BASIC, come Gambas, per indicare la rappresentazione esadecimale si usa il prefisso "&h", esempio: &h2013.
Ad ogni modo, in Gambas la rappresentazione esadecimale di un numero può essere scritta con i prefissi "&h", per esempio: &h2013, oppure anche con il solo carattere "&", per esempio: &2013