static void terminateBits(int numDataBytes, BitArray bits) throws WriterException {
    int capacity = numDataBytes * 8;
    if (bits.getSize() > capacity) {
      throw new WriterException("data bits cannot fit in the QR Code" + bits.getSize() + " > " +
          capacity);
    }
    for (int i = 0; i < 4 && bits.getSize() < capacity; ++i) {
      bits.appendBit(false);
    }
    // Append termination bits. See 8.4.8 of JISX0510:2004 (p.24) for details.
    // If the last byte isn't 8-bit aligned, we'll add padding bits.
    int numBitsInLastByte = bits.getSize() & 0x07;    
    if (numBitsInLastByte > 0) {
      for (int i = numBitsInLastByte; i < 8; i++) {
        bits.appendBit(false);
      }
    }
    // If we have more space, we'll fill the space with padding patterns defined in 8.4.9 (p.24).
    int numPaddingBytes = numDataBytes - bits.getSizeInBytes();
    for (int i = 0; i < numPaddingBytes; ++i) {
      bits.appendBits((i & 0x01) == 0 ? 0xEC : 0x11, 8);
    }
    if (bits.getSize() != capacity) {
      throw new WriterException("Bits size does not equal capacity");
    }
  }
static void terminateBits ( int numDataBytes , BitArray bits ) throws WriterException { int capacity = numDataBytes * 8 ; if ( bits . getSize ( ) > capacity ) { throw new WriterException ( "data bits cannot fit in the QR Code" + bits . getSize ( ) + " > " + capacity ) ; } for ( int i = 0 ; i < 4 && bits . getSize ( ) < capacity ; ++ i ) { bits . appendBit ( false ) ; } int numBitsInLastByte = bits . getSize ( ) & 0x07 ; if ( numBitsInLastByte > 0 ) { for ( int i = numBitsInLastByte ; i < 8 ; i ++ ) { bits . appendBit ( false ) ; } } int numPaddingBytes = numDataBytes - bits . getSizeInBytes ( ) ; for ( int i = 0 ; i < numPaddingBytes ; ++ i ) { bits . appendBits ( ( i & 0x01 ) == 0 ? 0xEC : 0x11 , 8 ) ; } if ( bits . getSize ( ) != capacity ) { throw new WriterException ( "Bits size does not equal capacity" ) ; } }
Terminate bits as described in 8.4.8 and 8.4.9 of JISX0510:2004 (p.24).