[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3578965#p3578965"]Категорически не согласен. Главное, для начала, вообще передать. Контрольная сумма позволит Вам что-то передать только по каналу связи, в котором вероятность одиночной ошибки в блоке данных существенно меньше единицы. Тогда как использование кодов корректирующих ошибки позволяет передать данные, когда вероятность одиночной ошибки в одном блоке данных вообще равна единице или пренебрежимо близка к ней.[/uquote]
Это в теории. На практике где вероятность есть вероятность ошибки ~1 на блок данных, чуть реже будет проскакивать и 2 ошибки (восстановить невозможно), и 3 ошибки (можно восстановить с ошибкой, если расположены "квадратом" неполным)
Вот нормальное распредедение, ждем 1 ошибку, а будут отклонения во все стороны
Что толку в том, что Вы выявите ошибку, если данные без ошибки Вы не сможете получить?
Тут можно сразу 2-3 раза передавать данные. И восстанавливать хитрым алгоритмом. Или применять более сложные алгоритмы, жесткий матан, я там ничего не понял, коды Рида-Соломона
https://habr.com/ru/post/191418/
Но там тоже противоречие, вокруг которого и мы тут ходим. Чем больше избыточных данных, тем надежнее восстановление. Нужен компромисс.
Условно говоря, мой метод позволяет передавать данные вплоть до вероятности ошибки в 1/4 - матрицей 2х2 на каждый бит.
Чуть хуже, 3 бита в этой матрице 2х2, алгоритм "подумает" что это одиночная ошибка, исправит добавив сбойный бит до матрицы 2х2 и отрапортует что справился ))
На глазок, думаю будет примерно так. Передаем 1 млн. сбойных пакетов где 1,2,3..10 бит с ошибкой. И смотрим результат.
CRC16 пропускает 15 ошибок и 0 восстанавливает.
Ваш метод, при 18 выделенных битах пропустит как-бы не 500 ошибок. Но при этом часть восстановит, может 20% или 200 000 пакетов, из которых 500 будут с ошибками. Я даже не знаю хорошо это или плохо, наверное есть задачи где именно это и нужно.
Добавлено after 9 minutes 20 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=3578972#p3578972"]в применении CRC нет ничего оригинального, необычного или хитрого, особенно если применяются стандартные полиномы и т.п.[/uquote]
CRC тоже можно считать по табличке, черех XOR побитно и аппаратно через сдвиги по кругу. И тут не про CRC, а другие оригинальные методы, которые сравниваются с CRC. А если речь пойдет о коде Рида-Соломона, то это будет взрыв мозга и на ночь такое лучше вообще не читать, куда еще хитрее то ))