I have an array of bytes (any length), and I want to encode this array into string using my own base encoder. In .NET
is standard Base64
encoder, but what if I want to encode the array in Base62
, Base53
or Base13
?
Is it even possible to create such universal base encoder?
I know I could do it the simple way, that is, for each byte reserve fixed number of chars (in case of Base62
, that would be 5 chars), and do direct byte->chars encoding, but I would be wasting space, as 5 Base62
chars are able to contain more than 1 byte, but less than 2 bytes.
How should I write such an encoder? Or is there already some class for this?
And please note that I need universal decoder as well, otherwise this is useless to me.
Resources
As the solution is already known (use BigInteger
), I would just like to put here some resources relating the BigInteger
class, as it is not available in .NET 3.5:
Big integers in C#
http://intx.codeplex.com/
https://svn.apache.org/repos/asf/incubator/heraldry/libraries/csharp/openid/trunk/Mono/Mono.Math/BigInteger.cs
http://www.codeproject.com/KB/cs/BigInteger_Library.aspx
http://www.codeproject.com/KB/cs/biginteger.aspx