snippetModerate
How to find a basis which is guaranteed to need 9 or less characters to represent a 12 digits number?
Viewed 0 times
numberhowbasisneedrepresentdigitscharacterslessfindwhich
Problem
I'm trying to map a 12 digit number into a fixed width file. For a number of reasons, it must be compressed in such a way that it is guaranteed to be less than or equal to 9 characters (alpha numeric is fine). My first thought was a change of base, but I can't find an equation which gives an upper bound the number of characters needed for a given base.
For example, transforming into base 32
123456789101 -> 3IV9I6JD
Which is 8 digits. How to find a basis which is guaranteed to need 9 or less characters to represent a 12 digits number?
For example, transforming into base 32
123456789101 -> 3IV9I6JD
Which is 8 digits. How to find a basis which is guaranteed to need 9 or less characters to represent a 12 digits number?
Solution
The largest 12 digit number in base 10 is $10^{12} - 1$. In general the largest $n$ position number in a base $b$ is $b^{n} - 1$. So in your case you need a base large enough that $b^{9} - 1 > 999,999,999,999$ $(10^{12} - 1).$ Solving for $b$:
$$b^{9} - 1 > 10^{12} - 1$$
$$b^{9} > 10^{12}$$
$$b^{9/9} > 10^{12/9}$$
$$b > 10^{12/9}$$
$$b > \sqrt[9]{10^{12}}$$
$$b > 21.54$$
So make your base 22 and your numeric data will fit in 9 positions.
$$b^{9} - 1 > 10^{12} - 1$$
$$b^{9} > 10^{12}$$
$$b^{9/9} > 10^{12/9}$$
$$b > 10^{12/9}$$
$$b > \sqrt[9]{10^{12}}$$
$$b > 21.54$$
So make your base 22 and your numeric data will fit in 9 positions.
Context
StackExchange Computer Science Q#43923, answer score: 11
Revisions (0)
No revisions yet.