public static void dumpHex( StringBuffer sb, byte[] b ) { for( int i = 0 ; i < b.length ; ++i ) { if( i % 16 == 0 ) { sb.append( Integer.toHexString( ( i & 0xFFFF ) | 0x10000 ).substring( 1, 5 ) + " - " ) ; } sb.append( Integer.toHexString( ( b[ i ] & 0xFF ) | 0x100 ).substring( 1, 3 ) + " " ) ; if( i % 16 == 15 || i == b.length - 1 ) { int j ; for( j = 16 - i % 16 ; j > 1 ; --j ) sb.append( " " ) ; sb.append( " - " ) ; int start = ( i / 16 ) * 16 ; int end = ( b.length < i + 1 ) ? b.length : ( i + 1 ) ; for( j = start ; j < end ; ++j ) if( b[ j ] >= 32 && b[ j ] <= 126 ) sb.append( ( char )b[ j ] ) ; else sb.append( "." ) ; sb.append( "\n" ) ; } } } public static void dumpHex( byte[] b ) { StringBuffer sb = new StringBuffer() ; dumpHex( sb, b ) ; System.out.println( sb.toString() ) ; }