Hexdumppublic class Hexdump extends Object
Fields Summary |
---|
private static final String | NL | private static final int | NL_LENGTH | private static final char[] | SPACE_CHARS | public static final char[] | HEX_DIGITS |
Methods Summary |
---|
public static void | hexdump(java.io.PrintStream ps, byte[] src, int srcIndex, int length)Generate "hexdump" output of the buffer at src like the following:
00000: 04 d2 29 00 00 01 00 00 00 00 00 01 20 45 47 46 |..)......... EGF|
00010: 43 45 46 45 45 43 41 43 41 43 41 43 41 43 41 43 |CEFEECACACACACAC|
00020: 41 43 41 43 41 43 41 43 41 43 41 41 44 00 00 20 |ACACACACACAAD.. |
00030: 00 01 c0 0c 00 20 00 01 00 00 00 00 00 06 20 00 |..... ........ .|
00040: ac 22 22 e1 |."". |
if( length == 0 ) {
return;
}
int s = length % 16;
int r = ( s == 0 ) ? length / 16 : length / 16 + 1;
char[] c = new char[r * (74 + NL_LENGTH)];
char[] d = new char[16];
int i;
int si = 0;
int ci = 0;
do {
toHexChars( si, c, ci, 5 );
ci += 5;
c[ci++] = ':";
do {
if( si == length ) {
int n = 16 - s;
System.arraycopy( SPACE_CHARS, 0, c, ci, n * 3 );
ci += n * 3;
System.arraycopy( SPACE_CHARS, 0, d, s, n );
break;
}
c[ci++] = ' ";
i = src[srcIndex + si] & 0xFF;
toHexChars( i, c, ci, 2 );
ci += 2;
if( i < 0 || Character.isISOControl( (char)i )) {
d[si % 16] = '.";
} else {
d[si % 16] = (char)i;
}
} while(( ++si % 16 ) != 0 );
c[ci++] = ' ";
c[ci++] = ' ";
c[ci++] = '|";
System.arraycopy( d, 0, c, ci, 16 );
ci += 16;
c[ci++] = '|";
NL.getChars( 0, NL_LENGTH, c, ci );
ci += NL_LENGTH;
} while( si < length );
ps.println( c );
| public static void | toHexChars(int val, char[] dst, int dstIndex, int size)This is the same as {@link jcifs.util.Hexdump#toHexString(int val, int
size)} but provides a more practical form when trying to avoid {@link
java.lang.String} concatenation and {@link java.lang.StringBuffer}.
while( size > 0 ) {
int i = dstIndex + size - 1;
if( i < dst.length ) {
dst[i] = HEX_DIGITS[val & 0x000F];
}
if( val != 0 ) {
val >>>= 4;
}
size--;
}
| public static void | toHexChars(long val, char[] dst, int dstIndex, int size)
while( size > 0 ) {
dst[dstIndex + size - 1] = HEX_DIGITS[(int)( val & 0x000FL )];
if( val != 0 ) {
val >>>= 4;
}
size--;
}
| public static java.lang.String | toHexString(int val, int size)This is an alternative to the java.lang.Integer.toHexString
method. It is an efficient relative that also will pad the left side so
that the result is size digits.
char[] c = new char[size];
toHexChars( val, c, 0, size );
return new String( c );
| public static java.lang.String | toHexString(long val, int size)
char[] c = new char[size];
toHexChars( val, c, 0, size );
return new String( c );
| public static java.lang.String | toHexString(byte[] src, int srcIndex, int size)
char[] c = new char[size];
size = ( size % 2 == 0 ) ? size / 2 : size / 2 + 1;
for( int i = 0, j = 0; i < size; i++ ) {
c[j++] = HEX_DIGITS[(src[i] >> 4 ) & 0x0F];
if( j == c.length ) {
break;
}
c[j++] = HEX_DIGITS[src[i] & 0x0F];
}
return new String( c );
|
|