Можно ли кодировать строку определенным образом, чтобы минимизировать количество байтов? в основном мне нужно получить 29 символов до 11 байтов данных.C# Как кодировать строку для минимизации байтов
var myString = "usmiaanzaklaacn40879005900133";
byte[] bytes = Encoding.UTF8.GetBytes(myString);
Console.WriteLine(bytes.Length); //Output = 29, 1 byte per character
Console.ReadKey();
Это показывает при кодировании с UTF8, что строка 29 символов приводит к 29 Bytes ... мне нужно 29 строку символов, в результате 11 байт или меньше .. это возможно? Я думал, что у меня может быть какой-то алгоритм поиска или бинарного отображения, но я немного не уверен, как это сделать на C#.
EDIT:
Так у меня есть чип, который имеет полезную нагрузку пользовательских данных 11 байт. Я хочу, чтобы иметь возможность сжать 29-значную строку (уникальную) в байты, назначить ее «пользовательским данным», а затем получить пользовательские байты данных и распаковать ее обратно на 29-строчную строку символов ... теперь я не знаю если это возможно, но любая помощь будет принята с благодарностью .. спасибо :)
сама строка [usmia] - [anzakl] - [aacn40879005900] - [133] = [origin] - [dest] - [random/unique] - [вес]
ОК последние 14 символов являются целыми числами.
У меня есть доступ ко всем происхождению и месту назначения ... было бы списано с целью создания хранилища ключей, у которого есть ключ как «Происхождение, например, usmia», а значение - конкретный байт. Я предполагаю, что это означало бы я мог бы иметь только 256 разных Origin и Dests, а затем просто сделать последние 14 символов целыми числами?
Почему это должно быть 11 байт? –
Поскольку у меня есть только 11 байт, чтобы играть с ... так что это может быть меньше, но максимум 11 – DaveHutchy
http://stackoverflow.com/questions/7343465/compression-decompression-string-with-c-sharp – Rob