26 lines
812 B
VB.net
26 lines
812 B
VB.net
Function sumDigits(num As Variant, base As Long) As Long
|
|
'can handle up to base 36
|
|
Dim outp As Long
|
|
Dim validNums As String, tmp As Variant, x As Long, lennum As Long
|
|
'ensure num contains only valid characters
|
|
validNums = Left$("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", base)
|
|
lennum = Len(num)
|
|
For L0 = lennum To 1 Step -1
|
|
x = InStr(validNums, Mid$(num, L0, 1)) - 1
|
|
If -1 = x Then Exit Function
|
|
tmp = tmp + (x * (base ^ (lennum - L0)))
|
|
Next
|
|
While tmp
|
|
outp = outp + (tmp Mod base)
|
|
tmp = tmp \ base
|
|
Wend
|
|
sumDigits = outp
|
|
End Function
|
|
|
|
Sub tester()
|
|
Debug.Print sumDigits(1, 10)
|
|
Debug.Print sumDigits(1234, 10)
|
|
Debug.Print sumDigits(&HFE, 16)
|
|
Debug.Print sumDigits(&HF0E, 16)
|
|
Debug.Print sumDigits("2", 2)
|
|
End Sub
|