我需要用一些噪音在线路上传输数据。每个传输包只有一个字节(8位)。我需要接收器能够捕获错误(并且可以选择地纠正其中的一些错误--但这并不是必要的,因为我可以在错误的情况下重复传输)。
现在我知道两种选择:
所以,可能有比奇偶控制更可靠的中间编码算法,但比Hamming码更容易实现?
发布于 2015-12-20 15:28:10
好的,下面是一些您可以做的事情:
取任意2位(或字节,只需理解大多数语言支持字节运算符远多于位运算符),xor它们在一起.这是你的验证码。
所以你有:
xor (^) table
_________________________
| 0 | 1
0 | 0 | 1
1 | 1 | 0所以某种代码:
byteA = 0x3d;
byteB = 0x47;
verificationCode = byteA ^ byteB;然后你把这三个字节发送到电线上,你可以用它们来检测传输故障.
这不是汉明码,这是一个简单的检测方法.
hamming代码工作在小字节,半字节:
想象一下这样的类型:
bit a = 1;
bit b = 0;
bit c = 1;
bit d = 1;
bit p1 = (a + b + d) % 2;
bit p2 = (a + c + d) % 2;
bit p3 = (b + c + d) % 2;然后,你把这些碎片和碎片混在一起,放在电线上:
如果存在p1,p2,a,p3,b,c,d,p4
因此,如果在另一边计算奇偶校验码:
如果一位被翻转,那么您可以恢复:
(假设所有未指定的奇偶校验位都正确)
如果不是这样的话.如果有2位或更多位错误,你必须重传.
您还可以通过使用第4奇偶校验位来添加一些验证,这也方便地适合于8位字节.
https://stackoverflow.com/questions/34359841
复制相似问题