Convertire un numero da Decimale in Binario: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 10: | Riga 10: | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
Dim | Dim i As Integer = 123456789 | ||
Dim bb As New Byte[] | Dim bb As New Byte[] | ||
Dim | Dim b As Byte | ||
While | While i > 0 | ||
bb.Add(CByte(i Mod 2)) | |||
bb.Add(CByte( | i \= 2 | ||
Wend | Wend | ||
bb.Reverse | |||
For b = 0 To bb.Max | |||
Print bb[b]; | |||
Next | |||
'''End''' | '''End''' | ||
Versione delle 13:54, 24 feb 2016
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 i As Integer = 123456789
Dim bb As New Byte[]
Dim b As Byte
While i > 0
bb.Add(CByte(i Mod 2))
i \= 2
Wend
bb.Reverse
For b = 0 To bb.Max
Print bb[b];
Next
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" ' char * SDL_ltoa(long value, char * string, int radix) Private Extern SDL_ltoa(value As Integer, strP As Pointer, radix As Integer) Public Sub Main() Dim p As Pointer p = Alloc(64) SDL_ltoa(483647, p, 2) Print String@(p) Free(p) End