Back in my "Convert a Number in Any Base (Up To 36) to a (Very Large) Decimal Number" article, I posted a function that would convert a number in any base to a decimal number where that number could contain up to 29 decimal digits... the following function is the compliment to it... with it, you can convert any decimal value up to a maximum of 79228162514264337593543950335 to any base (up to 36). The function takes two arguments... the decimal number you want to convert and the base you want to convert it to. Because VB will want to convert numbers that are too large to scientific notation, you will need to pass such large values into the function as a text string... smaller numbers can be passed in as numbers or text strings.
Code:
Function Dec2Base(DecimalValue As Variant, Base As Long) As String
Const PossibleDigits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
DecimalValue = CDec(DecimalValue)
Do Until DecimalValue = 0
Dec2Base = Mid(PossibleDigits, CDec(DecimalValue) - Base * _
Int(DecimalValue / Base) + 1, 1) & Dec2Base
DecimalValue = Int(CDec(DecimalValue) / Base)
Loop
End Function
Here are a few examples to give you an idea of its use...
Code:
MsgBox Dec2Base("326022581", 2) ==> 10011011011101011010110110101
MsgBox Dec2Base("79228162514264337593543950335", 16) ==> FFFFFFFFFFFFFFFFFFFFFFFF
MsgBox Dec2Base("3561869315733788", 36) ==> Z2KS69UIAK
Bookmarks