question: public int encode ( byte [ ] data , int off , int length , OutputStream out ) throws IOException { int modulus = length % 3 ; int dataLength = ( length - modulus ) ; int a1 , a2 , a3 ; for ( int i = off ; i < off + dataLength ; i += 3 ) { a1 = data [ i ] & 0xff ; a2 = data [ i + 1 ] & 0xff ; a3 = data [ i + 2 ] & 0xff ; out . write ( encodingTable [ ( a1 > > > 2 ) & 0x3f ] ) ; out . write ( encodingTable [ ( ( a1 << 4 ) | ( a2 > > > 4 ) ) & 0x3f ] ) ; out . write ( encodingTable [ ( ( a2 << 2 ) | ( a3 > > > 6 ) ) & 0x3f ] ) ; out . write ( encodingTable [ a3 & 0x3f ] ) ; } int b1 , b2 , b3 ; int d1 , d2 ; switch ( modulus ) { case 0 : break ; case 1 : d1 = data [ off + dataLength ] & 0xff ; b1 = ( d1 > > > 2 ) & 0x3f ; b2 = ( d1 << 4 ) & 0x3f ; out . write ( encodingTable [ b1 ] ) ; out . write ( encodingTable [ b2 ] ) ; out . write ( padding ) ; out . write ( padding ) ; break ; case 2 : d1 = data [ off + dataLength ] & 0xff ; d2 = data [ off + dataLength + 1 ] & 0xff ; b1 = ( d1 > > > 2 ) & 0x3f ; b2 = ( ( d1 << 4 ) | ( d2 > > > 4 ) ) & 0x3f ; b3 = ( d2 << 2 ) & 0x3f ; out . write ( encodingTable [ b1 ] ) ; out . write ( encodingTable [ b2 ] ) ; out . write ( encodingTable [ b3 ] ) ; out . write ( padding ) ; break ; } return ( dataLength / 3 ) * 4 + ( ( modulus == 0 ) ? 0 : 4 ) ; }
target:  encode the input data producing a base 64 output stream.