Можно ли математически выполнить кодирование и начальное 4-байтное сообщение в 8 байтов, и если один из 8 байтов полностью отброшен, а другой неверен, чтобы восстановить начальное 4-байтовое сообщение? Не было бы способа повторной передачи и не было бы известно местоположение сброшенного байта.
Если вы используете коррекцию ошибок Рида Соломона с 4-дюймовыми байтами с четностью, указанными в конце байтов данных "4", такими как DDDDPPPP, и вы закончите с DDDEPPP (где E - ошибка) и байт четности был отброшен, я не верю, что есть способ восстановить исходное сообщение (хотя поправьте меня, если я ошибаюсь)...
Как насчет умножения (или выполнения другой математической операции) начального 4-байтового сообщения константой, а затем использования свойств обратной математической операции для определения того, какой байт был отброшен. Или наложите некоторые ограничения на структуру сообщения, поэтому каждый другой байт должен быть нечетным, а остальные должны быть четными.
В качестве альтернативы вместо байтов это также может быть 4 десятичных разряда, закодированных определенным образом, на 8 десятичных цифр, где ошибки могут быть обнаружены и исправлены при тех же обстоятельствах, упомянутых выше, - повторная передача и местоположение сброшенного байта неизвестны.
Я ищу любые сумасшедшие идеи, которые могли бы иметь любые идеи?
EDIT:
Это может быть немного надуманным, но ситуация, которую я пытаюсь решить, - это тот, где у вас есть, скажем, неисправный принтер, который печатает важные числа на форме, которые затем отправляются в обрабатывающую фирму который использует OCR для чтения форм. OCR не будет идеальным, но он должен приблизиться только к цифрам для чтения. Неисправный принтер может стать более серьезной проблемой, когда он может потерять целую цифру, но нет способа узнать, какой из них он упадет, но они всегда выйдут в правильном порядке, не будут заменены никакие цифры.
Форма может быть изменена таким образом, чтобы она всегда печатала пробел между начальными четырьмя числами и номерами исправлений ошибок, то есть 1234 5678, так что можно было бы узнать, была ли сброшена начальная цифра 1234 или была сброшена цифра исправления ошибки 5678, если это облегчает задачу. Я думаю несколько похоже на то, как они проверяют номера кредитных карт с помощью алгоритма, но в четырехзначных кусках.
Надеюсь, это дает некоторые разъяснения относительно того, что я ищу...