[Gambas-user] Base Conversion
Jason Hackney
jshackney at ...626...
Sun Nov 16 21:50:07 CET 2008
Thanks. There was a python snippet I found on wikipedia earlier. Maybe I'll
knock something together in the next few days when I get a little more free
time.
On Sun, Nov 16, 2008 at 2:27 PM, Pablo Vera <pvera at ...729...> wrote:
> Here is a VB6 code to convert to and from base36, it should work almost
> the same in Gambas:
>
>
> ' Support functions
>
> ' Get a base36 digit
> Private Function D36(ByVal N As Integer) As String
> D36 = Chr$(N + IIf(N <= 9, 48, 55))
> End Function
>
> ' base36 Logarithm
> Private Function Log36(ByVal X As Double) As Double
> Log36 = Log(X) / Log(36#)
> End Function
>
>
> ' Convert a base10 number (Num10) to base36 with a maximum of RNum digits
> '
> Public Function ToBase36(ByVal Num10 As Long, ByVal RNum As Integer) As
> String
> Dim Num36 As String, Base As Long, Mult As Integer, E As Integer
> Num36 = String$(RNum, "0")
>
> If Num10 > 0 Then
> E = Int(Log36(Num10))
>
> Do
> Base = 36 ^ E
> Mult = Int(Num10 / Base)
> Mid$(Num36, RNum - E, 1) = D36(Mult)
>
> Num10 = Num10 - Mult * Base
> E = E - 1
> Loop Until E < 0
> End If
>
> ToBase36 = Num36
> End Function
>
>
> ' Convert a base36 number (Num36) back to base10
> '
> Public Function ToBase10(ByVal Num36 As String) As Long
> Dim Num10 As Long, I As Integer, D As Long, C As String, E As Integer
> Num10 = 0
>
> E = Len(Num36)
> For I = E To 1 Step -1
> C = UCase$(MID$(Num36, I, 1))
> If C >= "A" And C <= "Z" Then
> D = ASc(C) - 55
> ElseIf C >= "0" And C <= "9" Then
> D = ASc(C) - 48
> Else
> D = 0
> End If
> Num10 = Num10 + D * (36 ^ (E - I))
> Next I
>
> ToBase10 = Num10
> End Function
>
> Pablo
> _____________________________________________________________________
>
>
>
> Jason Hackney wrote:
> > A cursory look through the docs didn't turn up anything... Is there a
> > function to convert base, say base 10 to base 36? Or base 16 to base 36.
> I
> > want to get to base 36 from either base10 or base16.
> >
> > It shouldn't be too difficult to hack something together, but was
> wondering
> > if I'm overlooking something that's already there.
> >
> > Thanks!
> > -------------------------------------------------------------------------
> > This SF.Net email is sponsored by the Moblin Your Move Developer's
> challenge
> > Build the coolest Linux based applications with Moblin SDK & win great
> prizes
> > Grand prize is a trip for two to an Open Source event anywhere in the
> world
> > http://moblin-contest.org/redirect.php?banner_id=100&url=/
> > _______________________________________________
> > Gambas-user mailing list
> > Gambas-user at lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/gambas-user
> >
> >
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's
> challenge
> Build the coolest Linux based applications with Moblin SDK & win great
> prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
>
More information about the User
mailing list