Nano Hash - криптовалюты, майнинг, программирование

Почему я не могу распаковать этот файл LZW в Java на Android?

Мне нужно распаковать текстовый файл, который я загружаю из Интернета, около 256 КБ в сжатом виде и 2 МВ при извлечении. Утилита Linux file говорит мне, что это «сжатые данные 16 бит». Изучив его, я обнаружил, что compress использует алгоритм LZW. 7-zip говорит, что «тип» файла «Z» (как и его расширение), и может распаковать файл без каких-либо проблем, поэтому проблема не в файле. Я также знаю, что проблема не в том, как я загружаю файл, поскольку поток сжатых байтов совпадает с байтами, отображаемыми при открытии шестнадцатеричного редактора.

Сам файл представляет собой обычный текстовый файл матрицы прогноза текущей погоды от Environment Canada. К сожалению, у меня недостаточно репутации, чтобы добавить еще одну ссылку.

Мне не удалось найти встроенных декодеров LZW, поэтому мне пришлось прибегнуть к использованию сторонних библиотек. Их довольно много, но ни один из тех, что я пробовал до сих пор, не смог распаковать файл.

lzwj - бросает IndexOutOfBoundsException: Invalid index 40223, size is 256. (Сам индекс не очень важен). Однако длина кодового слова по умолчанию равна 12. Я изменил исходный код, чтобы он имел длину кодового слова 16, на что, по-видимому, указывает вывод file (я ошибаюсь в этом предположении?), но он выдает то же исключение (показанный индекс в ошибке для длины кодового слова 16).

Этот алгоритм также выдает исключение выхода индекса за границы после нескольких модификаций для получения входных данных. поток вместо файла. Однако, поскольку это, похоже, было написано студентом для задания, мне все равно неудобно его использовать.

Эта библиотека, к сожалению, имеет только метод compress , и не делает декомпрессию.

7-zip JBinding казался моим лучшим выбором, но, к сожалению, он не работает на Android, ни с jar для всех платформ, ни с jar только для ARM.

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

Может ли кто-нибудь помочь мне выяснить причину любой из этих ошибок или предоставить альтернативное решение?

08.04.2017

  • Пробовали ли вы Apache Commons Compress: commons.apache.org/proper/commons-compress и stackoverflow. ком/вопросы/36282358/ 08.04.2017
  • Спасибо, это работает отлично! Я не знаю, как это пролетело мимо моего радара, я даже не видел здесь никаких других вопросов, связанных с LZW, упоминающих об этом. 08.04.2017

Ответы:


1

Вы можете попытаться извлечь и использовать процедуру unlzw() в pigz. .

08.04.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..