ConvertToBase ( number ; base ; charSet )
Convert a decimal number to any other base
Average rating: 4.5 (25 votes) Log in to vote
Steven R. Allen Richard Carlton Consulting, Inc. http://www.rcconsulting.com |
Ex. 2: ConvertToBase ( 420 ; 40 ; "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcd" )
Ex. 3: ConvertToBase ( 777 ; 14 ; "!@#$%^&*()1234" )
Ex. 2: AK
Ex. 3: $4*
Function definition: (Copy & paste into FileMaker's Edit Custom Function window)
This function takes any decimal number and converts it to any base representation, using any arbitrary characters to represent the new base's values set.
This can be used in rather conventional ways (see Ex. 1 & 2), or in completely arbitrary ways that have no basis in any regularly used character set (see Ex. 3), and in fact might even break conventional character set expectations (see, again, Ex. 3, wherein the character "4" actually represents the [decimal] value 13).
Comments
comment, VR Jan 20, 2014 |
||
I believe this can be simpler if done from right to left: http://www.briandunning.com/cf/218 |
||
Shawn A. Krueger, MN Aug 2, 2016 |
||
Took a look at this, and the one mentioned in the other comment. The other one is easier to grok, but it requires that the character set be "hard coded" inside the CF. This one lets you pass the character set as a param, and therefore is a little more flexible. It also does its work without recursion, whereas the other one does use recursion. Probably not a performance issue, unless you get into really high number sets. Haven't tested for performance. I can see pros/cons to either way. If you need different alpha character sets in the same file, this one will be more flexible. If you only need/want 1, and you want 1 place to change/update it, the other one may be simpler. |
||
nonio, lopuu Apr 4, 2020 |
||
Thanks for the function. ConvertToBase ( 999999999999999999; 7; "0123456" ) = 1535844346544330041530 The internet says 1535044306544330041530 Thanks |
||
nonio, lopuu Apr 4, 2020 |
||
Thanks for the function. ConvertToBase ( 999999999999999999; 7; "0123456" ) = 1535844346544330041530 The internet says 1535044306544330041530 Thanks |
||
Note: these functions are not guaranteed or supported by BrianDunning.com. Please contact the individual developer with any questions or problems.