Если вы довольны низким энтропийным кодом, и вы можете обнаружить окончание сообщения, вы можете просто отправить каждый бит дважды.
Этот код можно восстановить из любого числа удалений, которые происходят в разных экспозициях:
Получив, найти все нечетные размера пробегов и продлить их на один бит. Если вы закончите с меньшим ожидаемым количеством бит, вы не сможете восстановить несколько удалений.
Если вы хотите обеспечить фиксированную частоту ошибок, которую можно восстановить, используйте бит-начинку.
Пример:
0110
encoded as:
00 11 11 00
a double error occurs:
0x 11 x1 00
received:
011100
'0' and '111' are odd-sized runs. Fix:
00111100
we have 8 bits, and have recovered from a double error.
decode:
0110
Пример 2:
0101
encoded as
00110011
transmitted as
0xxx0011
received as
00011
corrected as
000011
decoded as
001
which is shorter than expected. A transmission error has occured.
Пример 3 (вставка битов после запуска 3 бита):
0000 1111
stuffed as
00010 11101
sent as
0000001100 1111110011
Вы счастливы с (8, 4) код, который может исправить любое удаление? –
и, что более важно, вы можете обнаружить, что вы читаете менее 8 бит или читаете мусор в конце? –