ZXing.Common.ReedSolomon.ReedSolomonEncoder.encode C# (CSharp) Method

encode() public method

public encode ( int toEncode, int ecBytes ) : void
toEncode int
ecBytes int
return void
        public void encode(int[] toEncode, int ecBytes)
        {
            if (ecBytes == 0)
             {
            throw new System.ArgumentException("No error correction bytes");
             }
             int dataBytes = toEncode.Length - ecBytes;
             if (dataBytes <= 0)
             {
            throw new System.ArgumentException("No data bytes provided");
             }
             GenericGFPoly generator = buildGenerator(ecBytes);
             int[] infoCoefficients = new int[dataBytes];
             Array.Copy(toEncode, 0, infoCoefficients, 0, dataBytes);
             GenericGFPoly info = new GenericGFPoly(field, infoCoefficients);
             info = info.multiplyByMonomial(ecBytes, 1);
             GenericGFPoly remainder = info.divide(generator)[1];
             int[] coefficients = remainder.Coefficients;
             int numZeroCoefficients = ecBytes - coefficients.Length;
             for (int i = 0; i < numZeroCoefficients; i++)
             {
            toEncode[dataBytes + i] = 0;
             }
             Array.Copy(coefficients, 0, toEncode, dataBytes + numZeroCoefficients, coefficients.Length);
        }

Usage Example

Exemplo n.º 1
0
        private static void testEncodeDecodeRandom(GenericGF field, int dataSize, int ecSize)
        {
            Assert.IsTrue(dataSize > 0 && dataSize <= field.Size - 3, "Invalid data size for " + field);
            Assert.IsTrue(ecSize > 0 && ecSize + dataSize <= field.Size, "Invalid ECC size for " + field);
            ReedSolomonEncoder encoder = new ReedSolomonEncoder(field);

            int[]  message    = new int[dataSize + ecSize];
            int[]  dataWords  = new int[dataSize];
            int[]  ecWords    = new int[ecSize];
            Random random     = getPseudoRandom();
            int    iterations = field.Size > 256 ? 1 : DECODER_RANDOM_TEST_ITERATIONS;

            for (int i = 0; i < iterations; i++)
            {
                // generate random data
                for (int k = 0; k < dataSize; k++)
                {
                    dataWords[k] = random.Next(field.Size);
                }
                // generate ECC words
                Array.Copy(dataWords, 0, message, 0, dataWords.Length);
                encoder.encode(message, ecWords.Length);
                Array.Copy(message, dataSize, ecWords, 0, ecSize);
                // check to see if Decoder can fix up to ecWords/2 random errors
                testDecoder(field, dataWords, ecWords);
            }
        }
All Usage Examples Of ZXing.Common.ReedSolomon.ReedSolomonEncoder::encode