算法 – 错误纠正建议?

我有一个应用程序,理想情况下允许25%的错误使用12到16个字节(8位字节)长的原始消息进行纠正.约束是无法重传的消息,如果没有接收到部分消息,则不知道哪些字节没有显示.例如,假设我正在使用像Reed Solomon这样的东西,我在最初的16字节消息中添加了8个字节的代码字,这将适合25%正在纠正的错误,但如果只有20个中的20个字节实际收到?是否有纠错算法或算法组合可以纠正这种情况?

谢谢,

最佳答案 这是我刚才想到的一个非常低效的方案 –

假设您的原始消息由以下字节a(1),a(2),a(3),…,a(n)组成,您可以向其添加一些非常强的纠错码a(n 1), a(n 2),a(n 3),…,a(nm).现在,发送此消息与流1,2,3,4,5交错,即发送:

1,a(1),2,(2),…,n,a(n),n 1,a(n 1),…,n m,a(n m)

在消息的接收端,查找形式为k,S,k 1的连续字节块.这告诉您a(k)= S.此外,如果你看到两个三元组i,S,i 1 … k,T,k 1并且在这两个之间没有j,P,j 1,使得i 使用这种方案,您可能会丢弃实际通过的一些字节,但至少您将确定在哪里放置一些字节.然后,您可以使用非常强大的纠错代码来填充丢失的字节,并纠正您实际写下的字节中的错误.

(*为了使其工作整齐,你还必须确保消息字节不能与交错的序列字节混淆,但这是一个很容易通过转换解决的问题 – 例如,在传输之前你的字节是base64,所以他们的MSB为0,并将它们与MSB设置为1的字节交错

点赞