У меня есть массив байтов (любая длина), и я хочу кодировать этот массив в строку, используя свой собственный базовый кодировщик. В .NET
есть стандартный кодер Base64
, но что, если я хочу кодировать массив в Base62
, Base53
или Base13
?
Возможно ли создать такой универсальный базовый кодер?
Я знаю, что я мог бы сделать это простым способом, то есть для каждого байта зарезервировать фиксированное количество символов (в случае Base62
, это будет 5 символов) и сделать прямое байтовое кодирование символов, но я будет тратить пространство, так как 5 Base62
символы могут содержать более 1 байта, но менее 2 байтов.
Как мне написать такой кодер? Или уже есть какой-то класс для этого?
И обратите внимание, что мне нужен универсальный декодер, иначе это бесполезно для меня.
Ресурсы
Поскольку решение уже известно (используйте BigInteger
), я просто хотел бы разместить здесь некоторые ресурсы, относящиеся к классу BigInteger
, поскольку он недоступен в .NET 3.5:
Большие целые числа в С#
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