Differenze tra le versioni di "Convertire un numero da rappresentazione ottale in decimale"

Da Gambas-it.org - Wikipedia.
(Creata pagina con 'Per convertire un numero, espresso in formato a rappresentazione ottale, nella corrispondente rappresentazione ''decimale'', bisogna moltiplicare le cifre del numero ottale pe...')
 
 
(7 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
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.
+
=Conversione rapida 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")
  
Convertiamo, per esempio il numero ottale 123 nel corrispondente decimale:
+
 
 +
=Uso di appositi algoritmi=
 +
Si potranno anche utilizzare specifici algoritmi.
 +
 
 +
==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 * 8<SUP>2</sup>) + (2 * 8<SUP>1</sup>) + (3 * 8<SUP>0</sup>) =
 
  (1 * 8<SUP>2</sup>) + (2 * 8<SUP>1</sup>) + (3 * 8<SUP>0</sup>) =
 
   
 
   
Riga 10: Riga 21:
 
  =  <FONT color=#B22222>83</font>
 
  =  <FONT color=#B22222>83</font>
  
 
+
==Uso delle sole risorse di Gambas==
Per ottenere la conversione in Gambas potremo utilizzare questo codice: |[[#Note|1]]|
+
Volendo è possibile utilizzare anche un algoritmo come il seguente:
 
  '''Public''' Sub Main()   
 
  '''Public''' Sub Main()   
 
   
 
   
  Dim a As String   
+
  Dim s As String   
  Dim b, i, InteroFinale As Integer   
+
  Dim b, i, InteroFinale As Integer   
  Dim Esponente, crt As Integer
+
  Dim Esponente, crt As Integer
 
 
   
 
   
   a = InputBox("Immetti un numero in formato ottale:")
+
   s = "674"
 
      
 
      
   For b = Len(a) To 1 Step -1   
+
   For b = Len(s) To 1 Step -1   
 
 
 
     crt = Int(Val(Mid(a, b, 1)))   
 
     crt = Int(Val(Mid(a, b, 1)))   
 
     i = crt * 8 ^ Esponente   
 
     i = crt * 8 ^ Esponente   
 
     Esponente += 1   
 
     Esponente += 1   
 
     InteroFinale += i   
 
     InteroFinale += i   
   
+
  Next
   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".
 +
<BR>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"
 +
 +
<FONT Color=gray>' ''long int strtol (const char *__restrict __nptr, char **__restrict __endptr, int __base)''
 +
' ''Convert a string to a long integer.''</font>
 +
Private Extern strtol(__nptr As String, __endptr As Pointer, __base As Integer) As Long
 +
 +
 +
  '''Public''' Sub Main()
 
    
 
    
   Print InteroFinale
+
  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'''".
 +
<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:0.6400.6"
 +
 +
<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'''
 
  '''End'''
 +
 +
 +
 +
==Riferimenti==
 +
* https://docs.gtk.org/glib/func.ascii_strtoll.html

Versione attuale delle 01:25, 13 ago 2022

Conversione rapida 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")


Uso di appositi algoritmi

Si potranno anche utilizzare specifici algoritmi.

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

Volendo è possibile utilizzare anche un algoritmo come il seguente:

Public Sub Main()  

  Dim s As String  
  Dim b, i, InteroFinale As Integer  
  Dim Esponente, crt As Integer

  s = "674"
   
  For b = Len(s) 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


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.6400.6"

' 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


Riferimenti