public static int bytesToCodePoint ( ByteBuffer bytes ) { bytes . mark ( ) ; byte b = bytes . get ( ) ; bytes . reset ( ) ; int extraBytesToRead = bytesFromUTF8 [ ( b & 0xFF ) ] ; if ( extraBytesToRead < 0 ) return - 1 ; // trailing byte! int ch = 0 ; switch ( extraBytesToRead ) { case 5 : ch += ( bytes . get ( ) & 0xFF ) ; ch <<= 6 ; /* remember, illegal UTF-8 */ case 4 : ch += ( bytes . get ( ) & 0xFF ) ; ch <<= 6 ; /* remember, illegal UTF-8 */ case 3 : ch += ( bytes . get ( ) & 0xFF ) ; ch <<= 6 ; case 2 : ch += ( bytes . get ( ) & 0xFF ) ; ch <<= 6 ; case 1 : ch += ( bytes . get ( ) & 0xFF ) ; ch <<= 6 ; case 0 : ch += ( bytes . get ( ) & 0xFF ) ; } ch -= offsetsFromUTF8 [ extraBytesToRead ] ; return ch ; }
Returns the next code point at the current position in the buffer . The buffer s position will be incremented . Any mark set on this buffer will be changed by this method!