Data Compression Through Base36 Encoding

I'm trying to store a lot of large numbers that truncate when stored as `INT` values. Unfortunately they are too large for this type.

I'm thinking about using Base36 encoding to accomplish this. Are there any other ways to go about fixing this problem?

-
How big are the numbers? Bigger than `BIGINT` can store? – ypercubeᵀᴹ Aug 27 '12 at 14:48
oh wow :p didn't know there was such a thing as BIGINT... I'm a C programmer at heart still – Glenna Mccraw Aug 27 '12 at 14:53

More often than not, `Base36` encoding will lead to a loss of precision as the base conversion process requires floating point number operations. Not only will this corrupt your data when converting to and from `Base36`, you will also be consuming more space (`INT` takes up 4 bytes, many `Base36`-encoded integers near the 32-bit unsigned integral limit will take up more than this).

See PHP's documentation for a thorough explanation on the loss of precision.

-

You can use either,

the bigger than `INT`, integer `BIGINT` datatype:

`BIGINT UNSIGNED`: values from `0` up to `2^64-1` (about `18 * 10^18`)

`BIGINT SIGNED`: values from `-2^63` up to `2^63-1` (about `-9 * 10^18` to `9 * 10^18`)

or fixed-point `NUMERIC` (also named `DECIMAL`) datatype:

`DECIMAL(M, 0)`: values from `-(10^M-1)` up to `10^M+1`

The `M` can be up to `65`, so you can store integers with up to 65 decimal digits.

-
thanks for your help :) – Glenna Mccraw Aug 27 '12 at 15:05