Цей репозиторій містить реалізацію коду Хемінга на Python для виявлення та виправлення одиночних помилок у даних. Додаток дозволяє кодувати текстові файли за схемою "ASCII -> двійковий код -> код Хемінга" та декодувати їх назад, відновлюючи вихідний текст.
Проект розроблено в рамках Лабораторної роботи №1 з дисципліни "Безпека програм та даних".
- Кодування: Перетворення текстового файлу (ASCII) у файл, закодований кодом Хемінга (текстове представлення бітів '0' та '1').
- Декодування: Перетворення файлу, закодованого кодом Хемінга, назад у текстовий файл.
- Виправлення помилок: Автоматичне виявлення та виправлення одиночних бітових помилок у кожному блоці під час декодування.
- Налаштування блоку: Можливість задавати довжину інформаційного блоку (
m
) через командний рядок. - Інтерфейс: Простий інтерфейс командного рядка для взаємодії з користувачем.
- Python 3.x (перевірено на Python 3.13+)
- Жодних зовнішніх бібліотек не потрібно (використовуються тільки вбудовані
math
таos
).
- Клонуйте репозиторій або завантажте файл
hamming_coder.py
. - Підготуйте вхідний текстовий файл (наприклад,
input.txt
) з текстом, який ви хочете закодувати. Використовуйте прості ASCII символи (латиниця, цифри, стандартні розділові знаки). Найпростіше розмістити цей файл у тій самій папці, що йhamming_coder.py
. - Запустіть скрипт з терміналу або командного рядка, перебуваючи у папці проекту:
python hamming_coder.py
- Дотримуйтесь інструкцій на екрані:
- Оберіть режим:
encode
(для кодування) абоdecode
(для декодування). - Введіть шлях до вхідного файлу (наприклад,
input.txt
, якщо він у тій самій папці). - Введіть шлях до вихідного файлу (наприклад,
encoded.txt
для режимуencode
абоdecoded.txt
для режимуdecode
). Програма створить цей файл. - Введіть бажану довжину інформаційного блоку
m
(наприклад,16
або32
).
- Оберіть режим:
--- Кодер/Декодер Хемінга ---
Оберіть режим: 'encode' (кодувати), 'decode' (декодувати), або 'exit' для виходу: encode
Введіть шлях до вхідного файлу: input.txt
Введіть шлях до вихідного файлу: encoded.txt
Введіть довжину інформаційного блоку (m, ціле число > 0, наприклад, 8, 16, 32): 16
Кодування файлу 'input.txt' у 'encoded.txt' з m=16...
Параметри коду: k=5, n=21
Залишилось 8 біт в буфері. Обробка останнього блоку...
Доповнено 8 нулями до m=16.
Файл 'input.txt' успішно закодовано у 'encoded.txt'.
Всього оброблено блоків: 49