DECLARE FUNCTION fBase2Base$ (Number1$, Digits1$, Digits2$) DIM Base2 AS SHARED STRING * 02 : Base2 = "01" DIM Base8 AS SHARED STRING * 08 : Base8 = "012345678" DIM Base10 AS SHARED STRING * 10 : Base10 = "0123456789" DIM Base16 AS SHARED STRING * 16 : Base16 = "0123456789ABCDEF" '============================================================= '=== Start test code '============================================================= Base26$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" N$ = "1024" T! = TIMER A$ = fBase2Base$(N$, (Base10), Base26$) B$ = fBase2Base$(A$, Base26$, (Base10)) T! = TIMER - T! CLS PRINT " Base10 Value: "; N$ PRINT "Base10 -> Base26: "; A$ PRINT "Base26 -> Base10: "; B$ PRINT PRINT USING "ELAPSED TIME: ##.####sec_."; ABS(T!) END '----------------------------------------------------------- FUNCTION fBase2Base$ ( Number1$, Digits1$, Digits2$ ) ' LOCAL Bace%, C%, I%, N$, Nbr&, Nlen% Number1$ = UCASE$( Number1$ ) Digits1$ = UCASE$( Digits1$ ) Digits2$ = UCASE$( Digits2$ ) SELECT CASE Digits1$ ' CASE Base2 : Nbr& = VAL( "&b" + Number1$ ) CASE Base8 : Nbr& = VAL( "&o" + Number1$ ) CASE Base10 : Nbr& = VAL( Number1$ ) CASE Base16 : Nbr& = VAL( "&h" + Number1$ ) CASE ELSE : Nlen% = LEN( Number1$ ) Bace% = LEN( Digits1$ ) FOR I% = 1 TO Nlen% N$ = MID$ ( Number1$, I%, 1 ) C% = INSTR( Digits1$, N$ ) - 1 Nbr& = Nbr& * Bace% + C% NEXT END SELECT SELECT CASE Digits2$ ' CASE Base2 : N$ = BIN$( Nbr& ) CASE Base8 : N$ = OCT$( Nbr& ) CASE Base10 : N$ = STR$( Nbr& ) : N$ = MID$( N$, 2 ) CASE Base16 : N$ = HEX$( Nbr& ) CASE ELSE : N$ = "" Bace% = LEN( Digits2$ ) WHILE Nbr& > 0 I% = ( Nbr& MOD Bace% ) Nbr& = ( Nbr& - I% ) \ Bace% N$ = MID$( Digits2$, I% +1, 1 ) + N$ WEND END SELECT fBase2Base$ = N$ END FUNCTION