Convertire un numero da rappresentazione ottale in decimale
Introduzione generale
Per convertire un numero, espresso in formato a rappresentazione ottale, nella corrispondente rappresentazione decimale, bisogna moltiplicare le cifre del numero ottale per le potenze decrescenti di 8, e successivamente sommare i risultati.
Convertiamo, per esempio il numero ottale 123 nel corrispondente decimale:
(1 * 82) + (2 * 81) + (3 * 80) = = (1 * 64) + (2 * 8) + (3 * 1) = = 64 + 16 + 3 = = 83
Uso delle sole risorse di Gambas
Per ottenere la conversione in Gambas potremo utilizzare la funzione " Val( ) ", inserendo nel suo unico parametro la rappresentazione ottale in formato stringa del numero, alla quale viengono anteposti i seguenti caratteri "HO" (oosia la lettera "H" e la lettera "O").
Mostriamo un esempio pratico:
Public Sub Main()
Print Val("&O674")
End
Volendo è possibile utilizzare anche un algoritmo come il seguente:
Public Sub Main()
Dim a As String
Dim b, i, InteroFinale As Integer
Dim Esponente, crt As Integer
a = "674"
For b = Len(a) To 1 Step -1
crt = Int(Val(Mid(a, b, 1)))
i = crt * 8 ^ Esponente
Esponente += 1
InteroFinale += i
Next
Print InteroFinale
End
Uso della funzione esterna "strtol( )" della libreria Libc.so.6
Si potrà anche fare uso della funzione esterna "strtol( )" della libreria Libc.so.6, avendo cura di porre a suo terzo argomento il valore della base "8".
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 strtoul(__nptr As String, __endptr As Pointer, __base As Integer) As Long
Public Sub Main()
Dim p As Pointer
Dim l As Long
l = strtol("444", 0, 8)
Print l
End