ThoughtWorks.QRCode/ThoughtWorks/QRCode/Codec/Ecc/ReedSolomon.cs

(开头部分) 11KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

namespace ThoughtWorks.QRCode.Codec.Ecc
{
    using System;

    public class ReedSolomon
    {
        internal int[] y;
        internal int[] gexp = new int[0x200];
        internal int[] glog = new int[0x100];
        internal int NPAR;
        internal int MAXDEG;
        internal int[] synBytes;
        internal int[] Lambda;
        internal int[] Omega;
        internal int[] ErrorLocs = new int[0x100];
        internal int NErrors;
        internal int[] ErasureLocs = new int[0x100];
        internal int NErasures = 0;
        internal bool correctionSucceeded = true;

        public ReedSolomon(int[] source, int NPAR)
        {
            this.initializeGaloisTables();
            this.y = source;
            this.NPAR = NPAR;
            this.MAXDEG = NPAR * 2;
            this.synBytes = new int[this.MAXDEG];
            this.Lambda = new int[this.MAXDEG];
            this.Omega = new int[this.MAXDEG];
        }

        internal virtual void add_polys(int[] dst, int[] src)
        {
            for (int i = 0; i < this.MAXDEG; i++)
            {
                dst[i] ^= src[i];
            }
        }

        internal virtual int compute_discrepancy(int[] lambda, int[] S, int L, int n)
        {
            int num2 = 0;
            for (int i = 0; i <= L; i++)
            {
                num2 ^= this.gmult(lambda[i], S[n - i]);
            }
            return num2;
        }

        internal virtual void compute_modified_omega()
        {
            int[] dst = new int[this.MAXDEG * 2];
            this.mult_polys(dst, this.Lambda, this.synBytes);
            this.zero_poly(this.Omega);
            for (int i = 0; i < this.NPAR; i++)
            {
                this.Omega[i] = dst[i];
            }
        }

后面还有 306 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。