This PlayBASIC source code provides two functions; one to convert a base 10 value into base 64 and the inverse function to convert a base 64 back to base 10
[pbcode]
// characters used to represent each digit in our base 64 number
global Digits_key$="0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ_@"
// table to help use convert back from numbers in our base 64 string
dim Decode_Digits(255)
for lp=1 to len(Digits_key$)
ThisCHR=mid(Digits_Key$,lp)
Decode_Digits(ThisCHR)=lp-1
next
for lp =0 to 10
Value=rnd($7fffffff)
key$=EncodeInt64(Value)
Result =DecodeInt64(Key$)
print "Value="+str$(Value)+ " "+Key$+" = "+str$(Result)
next
print "Range Test Start."
max=$7fff
For lp =0 to max
key$=EncodeInt64(lp)
Value =DecodeInt64(Key$)
if lp<>Value
print "error: " + key$ + " = " +str$(lp)+" <> "+str$(Value)
endif
if abs(timer()-CurrentTime) >200
CurrentTime=timer()
Sync
endif
next
print "Test Over ......"
sync
waitkey
Function EncodeInt64(ThisValue)
// max digits within a 32bit integer
Digits= 32/6
for Digit=0 to Digits-1
Value= ThisValue and 63
ThisValue = ThisValue >> 6
Result$ =mid$(Digits_key$,Value+1)+Result$
next
EndFunction Result$
Function DecodeInt64(Number$)
for Digit=1 to Len(Number$)
Value= Decode_Digits(mid(Number$,Digit))
Result = (Result << 6) or Value
next
EndFunction Result
[/pbcode]