code: protected void _writeBinary(Base64Variant b64variant, byte[] input, int inputPtr, final int inputEnd)
              throws IOException, JsonGenerationException
      {
          // Encoding is by chunks of 3 input, 4 output chars, so:
          int safeInputEnd = inputEnd - 3;
          // Let's also reserve room for possible lf char each round
          int safeOutputEnd = _outputEnd - 6;
          int chunksBeforeLF = b64variant.getMaxLineLength() >> 2;
  
          // Ok, first we loop through all full triplets of data:
          while (inputPtr <= safeInputEnd) {
              if (_outputTail > safeOutputEnd) { // need to flush
                  _flushBuffer();
              }
              // First, mash 3 bytes into lsb of 32-bit int
              int b24 = ((int) input[inputPtr++]) << 8;
              b24 |= ((int) input[inputPtr++]) & 0xFF;
              b24 = (b24 << 8) | (((int) input[inputPtr++]) & 0xFF);
              _outputTail = b64variant.encodeBase64Chunk(b24, _outputBuffer, _outputTail);
              if (--chunksBeforeLF <= 0) {
                  // note: RISON does not escape newlines
                  _outputBuffer[_outputTail++] = '\n';
                  chunksBeforeLF = b64variant.getMaxLineLength() >> 2;
              }
          }
  
          // And then we may have 1 or 2 leftover bytes to encode
          int inputLeft = inputEnd - inputPtr; // 0, 1 or 2
          if (inputLeft > 0) { // yes, but do we have room for output?
              if (_outputTail > safeOutputEnd) { // don't really need 6 bytes but...
                  _flushBuffer();
              }
              int b24 = ((int) input[inputPtr++]) << 16;
              if (inputLeft == 2) {
                  b24 |= (((int) input[inputPtr]) & 0xFF) << 8;
              }
              _outputTail = b64variant.encodeBase64Partial(b24, inputLeft, _outputBuffer, _outputTail);
          }
      }
docs: /*
  ********************************************************
  /* Internal methods, low-level writing; binary
  ********************************************************