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.
Here are a few examples to give you an idea of its use...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
Code:MsgBox Dec2Base("326022581", 2) ==> 10011011011101011010110110101 MsgBox Dec2Base("79228162514264337593543950335", 16) ==> FFFFFFFFFFFFFFFFFFFFFFFF MsgBox Dec2Base("3561869315733788", 36) ==> Z2KS69UIAK




Reply With Quote

Bookmarks