In realtà credo tu intenda la conversione tra una stringa, rappresentante un valore decimale, in un valore puramente binario; in caso contrario parti da un concetto errato, ovvero che un numero è sempre un valore puramente binario, e che la sua rappresentazione a video è solo la trasformazione dello stesso in formato leggibile.
Come risposto da leo, se parliamo di trasformare un valore numerico (puro) in altri formati (vedi Float, Long, Integer, ecc.), la cosa dipende da cosa devi ottenere.
Faccio alcuni esempi di conversione:
a) Integer -> Long : funzione CLong() : si può fare
b) Integer -> Float : funzione CInt() : si può fare
c) Long -> Float : funzione CFloat() : non perdi nulla
d) Long -> Integer : funzione CInt() : fattibile solo per valori inferiori ai 16bit, altrimenti errore!
e) Float -> Integer : funzione CInt() : fattibile solo per valori inferiori ai 16bit, altrimenti errore! ti perdi i decimali
f) Float -> Long : funzione CLong() : ti perdi i decimali
Riguardo alla conversione da stringa, puoi usare le funzioni che ho indicato, perchè capiscono da cosa devono convertire (vale anche da tipo Variant).
Oltre alle poche funzioni che ho elencato, ce ne sarebbero anche altre, utili alla conversione in stringa di valori binari, con conversioni particolari, come: Hex, Bin, ovvero la trasformazione in valore esadecimale (0-9A-F) e binario (0/1) di un valore numerico.
Un'altra cosa, che forse non è ben chiara della doc, è la rappresentazione interna dei tipi Date che, sono in realtà costituiti da un valore float, di cui la parte intera rappresenta la data, mentre la parte decimale rappresenta l'ora.
Altra nota: il tipo Variant è un elemento che può assumere valori di tipo variabile (numero, stringhe, date, ecc.), molto simile al Variant del Basic e al "puntatore a void" del C/C++. Per questo motivo, il tipo Variant viene molto usato nelle classi e nelle funzioni che devono trattare valori altamente variabili e di tipo imprecisato; è però da tener conto che la logica che implica l'uso dei Variant deve essere molto controllata, altrimenti si può incorrere in problemi non facilmente individuabili.
Ultima nota: riguardo alla futura implementazione in Gambas3 del passaggio di valori per riferimento, questo è già valido per gli oggetti nelle attuali release. La novità della versione 3, è quella di espandere questa caratteristica anche per le variabili di base (Integer, String, ecc.); attualmente le modifiche apportate ad una classe (e questo riguarda anche gli array), da parte di una funzione, vengono mantenute anche dopo l'uscita da questa funzione. In effetti, la logica attuale (tenendo conto che Gambas è scritto in C++), invia alla funzione chiamata il puntatore all'oggetto, e NON una sua copia.
Comunque, mi pare che questo l'ho descritto nel wiki; fatemi sapere se non è chiaro...