Differenze tra le versioni di "Convertire un numero da rappresentazione ottale in decimale"
Riga 50: | Riga 50: | ||
=Uso della funzione esterna "''strtol( )''" della libreria Libc.so.6= | =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". | 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". | ||
+ | <BR>Il numero ottale sarà posto e rappresentato in una stringa di caratteri nel primo argomento della funzione esterna. | ||
Mostriamo un semplice esempio: | Mostriamo un semplice esempio: | ||
Riga 56: | Riga 57: | ||
<FONT Color=gray>' ''long int strtol (const char *__restrict __nptr, char **__restrict __endptr, int __base)'' | <FONT Color=gray>' ''long int strtol (const char *__restrict __nptr, char **__restrict __endptr, int __base)'' | ||
' ''Convert a string to a long integer.''</font> | ' ''Convert a string to a long integer.''</font> | ||
− | Private Extern | + | Private Extern strtol(__nptr As String, __endptr As Pointer, __base As Integer) As Long |
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
− | |||
Dim l As Long | Dim l As Long | ||
Riga 76: | Riga 76: | ||
* http://www.gnu.org/software/libc/manual/html_node/Parsing-of-Integers.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 | * 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". | ||
+ | <BR>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" | ||
+ | |||
+ | <FONT Color=gray>' ''gint64 g_ascii_strtoll (const gchar *nptr, gchar **endptr, guint base)'' | ||
+ | ' ''Converts a string to a gint64 value.''</font> | ||
+ | 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''' | ||
+ | |||
+ | |||
+ | |||
+ | =Riferimenti= | ||
+ | * https://developer.gnome.org/glib/stable/glib-String-Utility-Functions.html#g-ascii-strtoll |
Versione delle 16:48, 23 gen 2018
Indice
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".
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" ' 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