Мне нужно разработать эффективный способ кодирования/декодирования нескольких строк, содержащих пути файлов Windows, например. C: \ Users \ Public \ Documents \ CompanyName \ ApplicationName \ VersionNumber \ Filename.ext во встроенной системе с ограниченным долгосрочным хранением.Эффективный алгоритм (ы) для сжатия строк, содержащих пути файлов Windows
В настоящее время мы берем 3 символа и преобразуем их в единственное уникальное целое число, которое мы затем храним в одном из регистровых мест. Поскольку для всего блока имеется всего ~ 500 мест для хранения, совершенно очевидно, что использование 1 регистра для 3 символов не является хорошим решением.
документооборота Применение:
- Пользователь выбирает файл на компьютере с ОС Windows.
- Имя файла закодировано, как описано выше, и отправляется во встроенную систему вместе с другой информацией (не связанной с именем файла) в сохраненное хранилище.
- Оператор выбирает, когда следует выполнить информацию, отправленную на шаге 2. Это может быть далеко в будущем.
- Встроенная система выполняет операции.
- Информация (включая декодированное имя файла) отправляется обратно на ПК с ОС Windows.
- Windows PC обновляет файл с результатами операции.
Примечания:
- Обработка питания (ЦП) не является препятствием для этой смешанной системы (Windows PC и встраиваемых систем). В настоящее время мы выполняем кодирование на ПК с ОС Windows и декодирование встроенной системы, но этого не должно быть.
- Пути файлов Windows обычно находятся в 1 из нескольких мест, но клиент может изменить местоположение файла по умолчанию на все, что захочет, и они часто это делают.
- Пересмотренный алгоритм, скорее всего, будет реализован на C++.
Что было бы хорошим алгоритмом для этого кодирования/декодирования?
Пожалуйста, дайте мне знать, если я забыл какие-либо важные детали. Я старался быть настолько тщательным, насколько это возможно, но сжатие - это не мой опыт.
Это непонятно, какое имя файла находится в пункте назначения ... Пожалуйста, уточните. Также не понятно, что вы называете регистром. –
Регистр в этом контексте - это ячейка памяти, которая может хранить числовое значение (целое или с плавающей запятой). – markf78
Вы сохраняете только одно имя файла (за раз), правильно? Или возможно, что встроенное устройство имеет чередование этих данных в своей патетически ограниченной памяти? Кроме того, насколько велик регистр (в битах)? Три персонажа кажутся странным выбором. – rici