public static void dump_octets()

in yoko-core/src/main/java/org/apache/yoko/orb/OB/IORUtil.java [318:393]


    public static void dump_octets(final byte[] oct, final int offset, final int count, final StringBuilder sb) {
        if (count <= 0) {
            return; 
        }

        final StringBuilder ascii = new StringBuilder(18);
        switch (offset%0x10) {
            case 0:
                break;
            case 0xf: sb.append("  ");  ascii.append(" ");
            case 0xe: sb.append("  ");  ascii.append(" ");
            case 0xd: sb.append("  ");  ascii.append(" ");
            case 0xc: sb.append("   "); ascii.append(" ");
            case 0xb: sb.append("  ");  ascii.append(" ");
            case 0xa: sb.append("  ");  ascii.append(" ");
            case 0x9: sb.append("  ");  ascii.append(" ");
            case 0x8: sb.append("   "); ascii.append(" ");
            case 0x7: sb.append("  ");  ascii.append(" ");
            case 0x6: sb.append("  ");  ascii.append(" ");
            case 0x5: sb.append("  ");  ascii.append(" ");
            case 0x4: sb.append("   "); ascii.append(" ");
            case 0x3: sb.append("  ");  ascii.append(" ");
            case 0x2: sb.append("  ");  ascii.append(" ");
            case 0x1: sb.append("  ");  ascii.append(" ");
        }
        
        ascii.append(" \"");
        
        for (int i = offset; i < (offset + count); i++) {
            final int b = oct[i] & 0xff;
            
            // build up the ascii string for the end of the line
            ascii.append((PRINTABLE_CHAR_LOW < b && b < PRINTABLE_CHAR_HIGH)? (char)b : '.');
            
            // print the high hex nybble
            sb.append(HEX_DIGIT[b>>4]);
            // and the low hex nybble
            sb.append(HEX_DIGIT[b&0xf]);
            
            if (i%0x4 == (0x4-1)) {
                // space the columns on every 4-byte boundary
                sb.append(' ');
                if (i%0x10 == (0x10-1)) {
                    // write the ascii interpretation on the end of every line
                    sb.append(ascii).append("\"\n");
                    ascii.setLength(0);
                    ascii.append(" \"");
                    if (i%0x100 == (0x100-1)) {
                        // separating line every 0x100 bytes
                        //         00000000 00000000 00000000 00000000  "................"
                        sb.append("-----------------------------------\n");
                    }
                }
            }
        }
        
        switch ((offset+count)%0x10) {
            case 0:
                break;
            case 0x1: sb.append("  ");
            case 0x2: sb.append("  ");
            case 0x3: sb.append("   ");
            case 0x4: sb.append("  ");
            case 0x5: sb.append("  ");
            case 0x6: sb.append("  ");
            case 0x7: sb.append("   ");
            case 0x8: sb.append("  ");
            case 0x9: sb.append("  ");
            case 0xa: sb.append("  ");
            case 0xb: sb.append("   ");
            case 0xc: sb.append("  ");
            case 0xd: sb.append("  ");
            case 0xe: sb.append("  ");
            case 0xf: sb.append("   ").append(ascii).append("\"\n");
        }
    }