====== Небольшие программы на 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}}