Sub BigAnything(S As String, Digits As String) As Long
Dim N As Long = 0
For I = 0 To S.Length - 1
Dim ThisDigit As Int = Digits.IndexOf(S.CharAt(I))
If ThisDigit < 0 Then
Exit 'invalid digit = reached end of number
End If
N = N * Digits.Length + ThisDigit
Next
Return N
End Sub
Log(BigAnything("1232", "0123456789")) 'decimal
Log(BigAnything("1010", "01")) 'binary
Log(BigAnything("33", "01234567")) 'octal
Log(BigAnything("1B", "0123456789ABCDEF")) 'hexadecimal
Log(BigAnything("FFFF", "0123456789ABCDEF"))
Log(BigAnything("YIKES", "ABCDEFGHIJKLMNOPQRSTUVWXYZ")) 'hexavigesimal
Log(BigAnything("BASE36", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")) 'hexatridecimal