====== Небольшие программы на Python ====== Небольшие программы на [[python:python|]] ====== Инструменты для работы с бинарными файлами ====== Скрипты работают в [[python:python|]] 2 и 3. ===== fragment-from-binary-file.py ===== {{fragment-from-binary-file.py|}} Чтение фрагмента файла нужной длины по смещению и запись его в отдельный файл: Параметры: - Исходный файл - Файл для сохранения фрагмента - Смещение в исходном файле (шестнадцатеричное) - Длина (число байт) Пример: ./fragment-from-binary-file.py file.bin fragment.bin DA5 288 ===== fragment-to-binary-file.py ===== {{fragment-to-binary-file.py|}} Запись фрагмента в файл. Исходный файл открывается только на чтение, скрипт создаёт новый файл добавляя к имени исходного суффикс ''_new'' Параметры: - Исходный файл, в который записывается фрагмент - Файл с фрагментом данных для вставки - Смещение в исходном файле (шестнадцатеричное) - Длина (число байт) Пример: ./fragment-to-binary-file.py file.bin fragment.bin DA5 288 {{anchor:rle}} ====== Скрипты для работы с RLE ====== RLE (run-length encoding) кодирование повторов — алгоритм сжатия данных, в котором последовательность нескольких одинаковых символов заменена на один символ и число его повторов. Работают только в [[python:python|]] 3 ===== bin-to-rle.py ===== {{bin-to-rle.py|}} Сжатие содержимого двоичного файла по алгоритму RLE Параметры: - Двоичный файл - Сжатый файл (RLE) - Режим (8 или 16 бит), по умолчанию (если не указано) 8 бит Примеры: ./bin-to-rle.py test.bin test-8.rle ./bin-to-rle.py test.bin test-16.rle 16 ===== rle-to-bin.py ===== {{rle-to-bin.py|}} Распаковка содержимого файла, сжатого по алгоритму RLE в двоичный файл Параметры: - Сжатый файл (RLE) - Двоичный файл - Режим (8 или 16 бит), по умолчанию (если не указано) 8 бит Примеры: ./rle-to-bin.py test-8.rle test-8.bin ./rle-to-bin.py test-16.rle test-16.bin 16 ===== Описание формата сжатого файла ===== Каждый символ записывается в виде последовательности из 2 или 3 байт, в зависимости от режима. Режим 8 бит — 1 байт на количество: |<30%>| ^Байт^Назначение^ |1|значение| |2|количество| Режим 16 бит — 2 байта на количество: |<30%>| ^Байт^Назначение^ |1|значение| |2,3|количество| Тестовый файл: {{rle_test.bin|}} {{tag>Python}}