iTextSharp.text.pdf.qrcode.BitVector.GetArray C# (CSharp) Метод

GetArray() публичный Метод

public GetArray ( ) : byte[]
Результат byte[]
        public byte[] GetArray() {
            return array;
        }

Usage Example

Пример #1
0
        /**
         * Interleave "bits" with corresponding error correction bytes. On success, store the result in
         * "result". The interleave rule is complicated. See 8.6 of JISX0510:2004 (p.37) for details.
         */
        private static void InterleaveWithECBytes(BitVector bits, int numTotalBytes,
                                                  int numDataBytes, int numRSBlocks, BitVector result)
        {
            // "bits" must have "getNumDataBytes" bytes of data.
            if (bits.SizeInBytes() != numDataBytes)
            {
                throw new WriterException("Number of bits and data bytes does not match");
            }

            // Step 1.  Divide data bytes into blocks and generate error correction bytes for them. We'll
            // store the divided data bytes blocks and error correction bytes blocks into "blocks".
            var dataBytesOffset = 0;
            var maxNumDataBytes = 0;
            var maxNumEcBytes   = 0;

            // Since, we know the number of reedsolmon blocks, we can initialize the vector with the number.
            var blocks = new List <BlockPair>(numRSBlocks);

            for (var i = 0; i < numRSBlocks; ++i)
            {
                var numDataBytesInBlock = new int[1];
                var numEcBytesInBlock   = new int[1];
                GetNumDataBytesAndNumECBytesForBlockID(
                    numTotalBytes, numDataBytes, numRSBlocks, i,
                    numDataBytesInBlock, numEcBytesInBlock);

                var dataBytes = new ByteArray();
                dataBytes.Set(bits.GetArray(), dataBytesOffset, numDataBytesInBlock[0]);
                var ecBytes = GenerateECBytes(dataBytes, numEcBytesInBlock[0]);
                blocks.Add(new BlockPair(dataBytes, ecBytes));

                maxNumDataBytes  = Math.Max(maxNumDataBytes, dataBytes.Size());
                maxNumEcBytes    = Math.Max(maxNumEcBytes, ecBytes.Size());
                dataBytesOffset += numDataBytesInBlock[0];
            }
            if (numDataBytes != dataBytesOffset)
            {
                throw new WriterException("Data bytes does not match offset");
            }

            // First, place data blocks.
            for (var i = 0; i < maxNumDataBytes; ++i)
            {
                for (var j = 0; j < blocks.Count; ++j)
                {
                    var dataBytes = blocks[j].GetDataBytes();
                    if (i < dataBytes.Size())
                    {
                        result.AppendBits(dataBytes.At(i), 8);
                    }
                }
            }
            // Then, place error correction blocks.
            for (var i = 0; i < maxNumEcBytes; ++i)
            {
                for (var j = 0; j < blocks.Count; ++j)
                {
                    var ecBytes = blocks[j].GetErrorCorrectionBytes();
                    if (i < ecBytes.Size())
                    {
                        result.AppendBits(ecBytes.At(i), 8);
                    }
                }
            }
            if (numTotalBytes != result.SizeInBytes())
            {  // Should be same.
                throw new WriterException("Interleaving error: " + numTotalBytes + " and " +
                                          result.SizeInBytes() + " differ.");
            }
        }
All Usage Examples Of iTextSharp.text.pdf.qrcode.BitVector::GetArray