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


C# BitVector.getArray方法代码示例

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


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

示例1: interleaveWithECBytes

        // Interleave "bits" with corresponding error correction bytes. On success, store the result in
        // "result" and return true. 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.
            ArrayList blocks = new ArrayList(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 = ((BlockPair) 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 = ((BlockPair) 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:andrejpanic,项目名称:win-mobile-code,代码行数:63,代码来源:Encoder.cs


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