Calculate the size to a Base 64 encoded message
base64, c
Solution
If you do Base64 exactly right, and that includes padding the end with `=` characters, and you break it up with a `CR LF` every 72 characters, the answer can be found with:
code_size = ((input_size * 4) / 3);
padding_size = (input_size % 3) ? (3 - (input_size % 3)) : 0;
crlfs_size = 2 + (2 * (code_size + padding_size) / 72);
total_size = code_size + padding_size + crlfs_size;
In C, you may also terminate with a `\0`-byte, so there'll be an extra byte there, and you may want to length-check at the end of every code as you write them, so if you're just looking for what you pass to `malloc()`, you might actually prefer a version that wastes a few bytes, in order to make the coding simpler:
output_size = ((input_size * 4) / 3) + (input_size / 96) + 6;
Problem
I have a binary string that I am encoding in Base 64. Now, I need to know before hand the size of the final Base 64 encoded string will be. Is there any way to calculate that? Something like: BinaryStringSize is 64Kb EncodedBinaryStringSize will be 127Kb after encoding. Oh, the code is in C. Thanks.