Base16 means that you can encode one byte in two symbols.
Each symbol represents half a byte or 4 Bit
Base32 would allow for 5 bits per symbol, but that wouldn’t clearly map onto bytes. You would be able to represent the contents of 5 bytes in 8 symbols instead of the just four you get with hex, but the easy ability to read the contents of a byte would be lost.
A small increase in the data you can represent with human readable symbols at the cost of actual readability.
Not to mention that there are very few occasions where you need to represent 5 bytes worth of data. mostly it is multiples of two like 2, 4 or 6. Occasionally 3 for colors etc but never 5.
So the one character you would save would still be wasted much of the time.
You would be able to represent a 24-bit color in 5 characters instead of 6 but you wouldn’t be able to extract the amounts of red green and blue just by looking at it.
It would be very little benefit at too great a cost.
For the rare occasions where space is much, much more important than readability, Base64 is preferable.
There are enough printable characters even in the most restrictive environments that can be sure to work everywhere to reach 64 possible symbols.
This allows you to encode 6-bits of information per character. It is not very readable, but useful in situations where you can use the full 8-bit (actually 7-Bit) per character that ASCII has.
For example if you want to put an ID into an URL, space is obviously a premium and you are very limited with the characters you can use there, but 64 is doable. This is how Youtube IDs work for example.
Also Mime encoding for emails uses Base64.
Latest Answers