Алгоритмы сжатия данных: сжатие байтов - PullRequest
2 голосов
/ 30 июня 2019

Итак, я в основном разрабатываю настольное приложение, в котором вы предоставляете файл, который сжимает его и возвращает вам в формате сжатой строки.Под этим я подразумеваю, что я читаю байты файлов, сжимаю эти байты и затем в основном преобразую их в необработанный файл .txt.Процесс преобразования прост, я пытаюсь выяснить, как сжать файл.Я знаю, что хочу выполнить сжатие данных без потерь, потому что именно так я собираюсь распаковать файл, но я просто не знаю, какой алгоритм сжатия использовать или нужно ли мне что-то программировать самостоятельно.

Например:

public String CompressFile(Bytes fileInformation[]) {
   for(int i = 0; i < fileInformation; i++) {
      if(fileInformation[i].equals(fileInformation[i + 1]) {
        // Say that the file has two instances of the same byte than no need to 
        // include it twice or thrice.
      }
   }
}

Выше приведен очень простой пример.Но я хочу что-то более сложное, способное сжимать файлы до тех пор, пока не останется истинная энтропия или случайность.Нет больше сжатия, это настолько случайно, насколько вы можете получить.И из этих данных я могу распаковать файл и представить его пользователю, когда он предоставит мне сжатые данные.Проще говоря, я хотел бы использовать алгоритм сжатия, который является эффективным, быстрым, работает и является мощным.Заранее спасибо.

Редактировать: Чтобы лучше сказать, мне нужно сжать или уменьшить строку или последовательность байтов, которые содержит файл, а не сам файл.

Суть этого вопроса в том, что я хочу сжать массив int.Например, если у меня есть массив {1, 4, 5, 1, 4}, я хочу сгруппировать единицы и четверки вместе.Это не так полезно, но, поскольку массив масштабируется, алгоритм сжатия может помочь значительно уменьшить длину массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...