Я ищу общий алгоритм, который кодирует/декодирует данную строку в определенных символах, установленных в/из массива байтов. Он должен занимать минимум места.
Я начал разрабатывать свой алгоритм, который представляет собой своего рода алгоритм Base'n' to Base 2, но я думаю, что что-то подобное уже должно быть разработано.
Мне нужно кодировать строки с минимальным числом битов, используя известный ограниченный набор символов. Может быть, я должен использовать bzip2?
Изменить: максимальная длина моей строки составляет 160 символов. Я могу их дополнить, если нужно.
Edit2: я должен знать число битов в худшем случае.
byte[] encode(string charset, string value)
string decode(string charset, byte[] encodedValue)
Применение:
string myString = "HELLO WORLD";
string charSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ "; // Base 27
byte[] encodedString = encode(charset, myString); // Base 27 -> Base 2
Debug.Assert(myString.Equals(decode(charset, encodedString))); // Base 2 -> Base 27
Encoding.UTF8.GetBytes(myString)
и передайте результат написанному там методу. - person xanatos   schedule 26.06.2015