当前位置: 首页>>代码示例>>C#>>正文


C# ByteArray.Size方法代码示例

本文整理汇总了C#中ByteArray.Size方法的典型用法代码示例。如果您正苦于以下问题:C# ByteArray.Size方法的具体用法?C# ByteArray.Size怎么用?C# ByteArray.Size使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ByteArray的用法示例。


在下文中一共展示了ByteArray.Size方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: GenerateECBytes

        static ByteArray GenerateECBytes(ByteArray dataBytes, int numEcBytesInBlock) {
            int numDataBytes = dataBytes.Size();
            int[] toEncode = new int[numDataBytes + numEcBytesInBlock];
            for (int i = 0; i < numDataBytes; i++) {
                toEncode[i] = dataBytes.At(i);
            }
            new ReedSolomonEncoder(GF256.QR_CODE_FIELD).Encode(toEncode, numEcBytesInBlock);

            ByteArray ecBytes = new ByteArray(numEcBytesInBlock);
            for (int i = 0; i < numEcBytesInBlock; i++) {
                ecBytes.Set(i, toEncode[numDataBytes + i]);
            }
            return ecBytes;
        }
开发者ID:Niladri24dutta,项目名称:itextsharp,代码行数:14,代码来源:Encoder.cs

示例2: InterleaveWithECBytes

        /**
         * 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.
         */
        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".
            int dataBytesOffset = 0;
            int maxNumDataBytes = 0;
            int maxNumEcBytes = 0;

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

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

                ByteArray dataBytes = new ByteArray();
                dataBytes.Set(bits.GetArray(), dataBytesOffset, numDataBytesInBlock[0]);
                ByteArray 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 (int i = 0; i < maxNumDataBytes; ++i) {
                for (int j = 0; j < blocks.Count; ++j) {
                    ByteArray dataBytes = blocks[j].GetDataBytes();
                    if (i < dataBytes.Size()) {
                        result.AppendBits(dataBytes.At(i), 8);
                    }
                }
            }
            // Then, place error correction blocks.
            for (int i = 0; i < maxNumEcBytes; ++i) {
                for (int j = 0; j < blocks.Count; ++j) {
                    ByteArray 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.");
            }
        }
开发者ID:Niladri24dutta,项目名称:itextsharp,代码行数:64,代码来源:Encoder.cs


注:本文中的ByteArray.Size方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。