Convertire un numero da Decimale in Binario: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
(Creata pagina con 'Come è noto, per convertire un numero da Decimale in rappresentazione binaria, si può far uso agevolmente dell'apposita funzione Bin$. Volendo, è ovviamente poss...')
 
Nessun oggetto della modifica
Riga 1: Riga 1:
Come è noto, per convertire un numero da Decimale in rappresentazione binaria, si può far uso agevolmente dell'apposita [[Bin$|funzione Bin$]].
Per convertire un numero da Decimale in rappresentazione binaria, sono possibili almeno tre modalità.




===Uso della funzione ''Bin()'' di Gambas===
Come è noto, si può far uso agevolmente dell'apposita [[Bin$|funzione Bin()]].
===Uso di apposito algoritmo===
Volendo, è ovviamente possibile raggiungere il medesimo risultato con apposito codice, come ad esempio il seguente:
Volendo, è ovviamente possibile raggiungere il medesimo risultato con apposito codice, come ad esempio il seguente:
  '''Public''' Sub Main()
  '''Public''' Sub Main()
Riga 23: Riga 28:
   Print "Risultato: "; s
   Print "Risultato: "; s
    
    
'''End'''
===Uso della funzione esterna SDL_ltoa() del API di SDL2===
E' inoltre possibile far uso della funzione esterna ''ltoa()'' del API di SDL2.
In tal caso sarà necessario installare nel sistema e richiamare nell'applicazione Gambas la libreria dinamica e condivisa: "''libSDL2-2.0.so.0.2.0''"
Mostriamo un semplice esempio:
Library "libSDL2-2.0:0.2.0"
<FONT Color=gray>' ''SDL_ltoa((long)value, string, radix)''</font>
Private Extern SDL_ltoa(value As Long, strP As Pointer, radix As Integer)
'''Public''' Sub Main()
  Dim p As Pointer
 
  p = Alloc(32)
 
  SDL_ltoa(483647, p, 2)
 
  Print String@(p)
 
  Free(p)
  '''End'''
  '''End'''

Versione delle 05:10, 7 lug 2015

Per convertire un numero da Decimale in rappresentazione binaria, sono possibili almeno tre modalità.


Uso della funzione Bin() di Gambas

Come è noto, si può far uso agevolmente dell'apposita funzione Bin().


Uso di apposito algoritmo

Volendo, è ovviamente possibile raggiungere il medesimo risultato con apposito codice, come ad esempio il seguente:

Public Sub Main()

 Dim n As Integer = 123456789
 Dim bb As New Byte[]
 Dim s As String
 
  While n > 0

    bb.Add(CByte(Asc(CStr(n Mod 2))))
    n \= 2

  Wend

  With bb
    .Reverse
    s = bb.ToString()
  End With

  Print "Risultato: "; s
 
End


Uso della funzione esterna SDL_ltoa() del API di SDL2

E' inoltre possibile far uso della funzione esterna ltoa() del API di SDL2.

In tal caso sarà necessario installare nel sistema e richiamare nell'applicazione Gambas la libreria dinamica e condivisa: "libSDL2-2.0.so.0.2.0"


Mostriamo un semplice esempio:

Library "libSDL2-2.0:0.2.0"

' SDL_ltoa((long)value, string, radix)
Private Extern SDL_ltoa(value As Long, strP As Pointer, radix As Integer)


Public Sub Main()

 Dim p As Pointer
 
  p = Alloc(32)
  
  SDL_ltoa(483647, p, 2)
  
  Print String@(p)
  
  Free(p)

End