我目前正在使用reed-solomon技术进行工作。据我所知,第一个纠错码始终与数据字的异或相同,因为范德蒙矩阵的第一行始终为1,并且在伽罗华域中元素的加法等效于异或。
现在我尝试使用Zxing 3.3.0实现的ReedSolomonEncoder获取一些代码字。请参见以下Java列表:
ReedSolomonEncoder rs = new ReedSolomonEncoder(GenericGF.QR_CODE_FIELD_256);
int[] codeword = {72,87,0,0};
rs.encode(codeword, 2);
System.out.println("Ecc for " + codeword[0] + " and " + codeword[1]);
System.out.println("XOR: " + (72^87));
System.out.println("RS #1: " + codeword[2]); // Shouldn't this be 31 too?
System.out.println("RS #2: " + codeword[3]);
下面是输出结果:
Ecc for 72 and 87
XOR: 31
RS #1: 28
RS #2: 3
有两种可能性:
- 我对Reed-Solomon的理解有误
- 我使用的实现方式不正确(因为javadoc写得很差)
或者这是一个bug,但我不太相信。
j
从0到n-k-1,因此两个综合症是S0和S1,其中S0是解码消息中元素的异或。 - rcgldr