Convertire un numero da rappresentazione ottale in decimale
Indice
Conversione con la funzione "Dec()"
Si potrà usare la funzione nativa "Dec()", impostando nel primo argomento il numero ottale da convertire in rappresentazione decimale 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