1.一种基于阵列运算且码距自由确定的编码方法,其特征在于,包括以下步骤:S1、获取编码方案中的原始数据长度k和最小汉明距离d;
S2、将原始数据按照设定数据块大小BlockSize进行分块,得到BlockNum个原始数据块;
S3、将所有原始数据块进行分条带处理,使k个原始数据块分为一个条带,得到StripNum个条带;
S4、对于任一个条带,将其k个原始数据块按顺序摆放为p×p的阵列;其中k=p×p;
S5、根据公式Di(r,c)=(r+i×c)mod p获取该阵列中第r行第c列原始数据块在常数i取不同值时对应的值Di(r,c);其中mod表示取模运算;0≤i≤d-2;0≤r,c
S6、对于常数i的每一个取值,将对应的Di(r,c)值相同的原始数据块所在阵列的行列号放入同一个集合中,得到p×(d-1)个行列号集合;
S7、对于每个行列号集合,从该阵列中取出该行列号集合中行列号对应的原始数据块,得到与每个行列号集合相对应的原始数据集;
S8、对于每个原始数据集,依次取出其中每个原始数据块第q个字节数据进行异或运算,得到对应的第q个字节校验数据;将每个原始数据块对应的所有字节校验数据列序作为该原始数据块对应的校验块,进而得到与所有行列号集合相对应的p×(d-1)个校验块,即与该条带相对应的p×(d-1)个校验块;
S9、将该条带对应的原始数据块和校验块之和作为该条带的编码长度n,并将该条带的k个原始数据块和p×(d-1)个校验块分别存到n个不同的存储节点上,完成该条带的编码;
S10、重复步骤S4至步骤S9,直至所有条带都编码完成。
2.根据权利要求1所述的基于阵列运算且码距自由确定的编码方法,其特征在于,所述步骤S2的具体方法为:将原始数据按照设定数据块大小BlockSize进行分块,得到BlockNum个原始数据块,判断最后一个原始数据块是否小于BlockSize,若是这在该原始数据块末尾填充零使其大小为BlockSize,否则直接进入步骤S3。
3.根据权利要求1所述的基于阵列运算且码距自由确定的编码方法,其特征在于,所述步骤S3的具体方法为:对所有原始数据块按照k个原始数据块分为一个条带进行分条带处理,判断最后一个条带是否不足k个数据块,若是则填充全零数据块使其达到k个数据块,否则直接进入步骤S4。