Convertire un numero da rappresentazione ottale in decimale
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 (8 = ottale).
Dim ott As String = "674" Print Dec(ott, 8)
Conversione con i caratteri &o
La modalità più rapida per effettuare la conversione dalla rappresentazione ottale in quella decimale è di anteporre alla rappresentazione binaria i simboli &o, come segue:
Print &o674
oppure, avendo la rappresentazione ottale in formato stringa, usando la funzione "Val()" e i predetti caratteri &o:
i = Val("&o674")
Avendo il valore binario contenuto in una variabile
Dim ott As String = "674"
Print Val("&o" & ott)
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".
Il numero ottale sarà posto e rappresentato in una stringa di caratteri nel primo argomento della funzione esterna.
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 l As Long
l = strtol("444", 0, 8)
Print l
End
Riferimenti
- http://man7.org/linux/man-pages/man3/strtol.3.html
- http://www.gnu.org/software/libc/manual/html_node/Parsing-of-Integers.html
- https://www.tutorialspoint.com/c_standard_library/c_function_strtol.htm
Uso della funzione esterna "g_ascii_strtoll()" della libreria Libglib-2.0
In modo analogo alla modalità precedente si potrà anche fare uso della funzione esterna "g_ascii_strtoll()" della libreria Libglib-2.0, avendo cura di porre a suo terzo argomento il valore della base "8".
Il numero ottale sarà posto e rappresentato in una stringa di caratteri nel primo argomento della funzione esterna.
Mostriamo un semplice esempio:
Library "libglib-2.0:0.8000.2"
' gint64 g_ascii_strtoll (const gchar *nptr, gchar **endptr, guint base)
' Converts a string to a gint64 value.
Private Extern g_ascii_strtoll(nptr As String, endptr As Pointer, base As Integer) As Long
Public Sub Main()
Dim l As Long
l = g_ascii_strtoll("444", 0, 8)
Print l
End