Any2Dec - Convert from any numeric base to decimal
' convert from any base to decimal
' BASE can be in the range 2-36
Function Any2Dec(ByVal otherBaseNumber As String, ByVal base As Integer) As Long
Dim digits As String
Dim digitValue As Long
' check base
If base < 2 Or base > 36 Then
Throw New ArgumentException("Base must be in range 2-36")
End If
' get the list of valid digits
digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".Substring(0, base)
' convert to decimal
Dim ch As Char
For Each ch In otherBaseNumber.ToUpper()
' get the digit's value
digitValue = digits.IndexOf(ch)
' error if invalid digit
If digitValue < 0 Then
Throw New ArgumentException("Invalid character")
End If
' add to running result
Any2Dec = Any2Dec * base + digitValue
Next
End Function