Brian Dunning's FileMaker Custom Functions

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   Steven R. Allen
Richard Carlton Consulting, Inc.
http://www.rcconsulting.com

Share on Facebook Share on Twitter

  Sample input:
Ex. 1: ConvertToBase ( 420 ; 7 ; "0123456" )

Ex. 2: ConvertToBase ( 420 ; 40 ; "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcd" )

Ex. 3: ConvertToBase ( 777 ; 14 ; "!@#$%^&*()1234" )
  Sample output:
Ex. 1: 1140

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   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   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   nonio, lopuu
Apr 4, 2020
Thanks for the function.
ConvertToBase ( 999999999999999999; 7; "0123456" ) = 1535844346544330041530
The internet says 1535044306544330041530
Thanks
 
nonio   nonio, lopuu
Apr 4, 2020
Thanks for the function.
ConvertToBase ( 999999999999999999; 7; "0123456" ) = 1535844346544330041530
The internet says 1535044306544330041530
Thanks
 

Log in to post comments.

 

Note: these functions are not guaranteed or supported by BrianDunning.com. Please contact the individual developer with any questions or problems.

Support this website.

This library has been a free commmunity resource for FileMaker users and developers for 20 years. It receives no funding and has no advertisements. If it has helped you out, I'd really appreciate it if you could contribute whatever you think it's worth: