纠错建议?

时间:2010-02-26 14:01:19

标签: algorithm error-handling error-correction

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

谢谢,

1 个答案:

答案 0 :(得分:2)

这是我刚才想到的一个非常低效的方案 -

假设您的原始邮件由以下字节a(1),a(2),a(3),...,a(n)组成,您可以向其添加一些非常强大的错误更正代码a(n+1),a(n+2),a(n+3),...,a(n+m)。现在,将此消息与流1,2,3,4,5交叉发送,即发送:

1,(1),2,(2),...,n的第(n)中,n + 1,一个(N + 1),...,N + M,A(N +米)

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

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