FileDocCategorySizeDatePackage
Hexdump.javaAPI DocJCIFS 1.3.17 API5685Tue Oct 18 15:26:24 BST 2011jcifs.util

Hexdump

public 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
Constructors Summary
Methods Summary
public static voidhexdump(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 voidtoHexChars(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 voidtoHexChars(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.StringtoHexString(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.StringtoHexString(long val, int size)

        char[] c = new char[size];
        toHexChars( val, c, 0, size );
        return new String( c );
    
public static java.lang.StringtoHexString(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 );