base converter

Before i go off and re-invent the wheel…

Does anyone have any xojo code to convert decimal to base 36 and back again?

Theres VB code on wikipedia which should be darn near “cut & paste” that converts TO base36
The conversion back shouldnt be much more work

Cheers.

I will take a look.

These functions convert to and from base-10 and any base between 2 and 36:

Function ConvertFromBase(Value As String, FromBase As Integer) As Integer
  ' Converts the value into base-10 using FromBase
  Static base() As String = Split("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", "")
  If FromBase - 1 > UBound(base) Or FromBase < 2 Or FromBase > 36 Then Raise New OutOfBoundsException
  Dim Result As Integer
  For i As Integer = 1 To Value.Len
    Dim datum As Integer = Base.IndexOf(Value.Mid(i, 1))
    Result = FromBase * Result + datum
  Next
  Return Result
End Function
Function ConvertToBase(Value As Integer, NewBase As Integer) As String
  ' Converts an Integer into a string representation of the number in NewBase
  Static base() As String = Split("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", "")
  If NewBase - 1 > UBound(base) Or NewBase < 2 Or NewBase > 36 Then Raise New OutOfBoundsException
  Dim digit() As String
  Do Until Value = 0
    Dim remainder As Integer = Value Mod NewBase
    Value = Value \\ NewBase
    digit.Insert(0, base(remainder))
  Loop
  Return Join(digit, "")
End Function

brilliant!

Thanks @Andrew Lambert !