public static String dump()

in core/src/main/java/org/apache/mina/util/ByteBufferDumper.java [42:108]


    public static String dump(ByteBuffer buffer, int nbBytes, boolean toAscii) {
        byte data[];
        int start;
        int size = Math.min(buffer.remaining(), nbBytes >= 0 ? nbBytes : Integer.MAX_VALUE);
        int length = buffer.remaining();

        if (buffer.hasArray() && !buffer.isReadOnly()) {
            start = buffer.position();
            data = buffer.array();
        } else {
            data = new byte[size];

            int oldpos = buffer.position();
            buffer.get(data);
            buffer.position(oldpos);

            start = 0;
            length = data.length;
        }

        // is not ASCII printable ?
        boolean binaryContent = false;

        if (toAscii) {
            for (int i = start; i < start + size; i++) {
                byte b = data[i];

                if (((b < 32) || (b > 126)) && (b != 13) && (b != 10)) {
                    binaryContent = true;
                    break;
                }
            }
        }

        if (!toAscii || binaryContent) {
            StringBuilder out = new StringBuilder(size * 3 + 30);
            out.append("ByteBuffer[len=").append(length).append(",bytes='");

            // fill the first
            int byteValue = data[start] & 0xFF;
            boolean isFirst = true;

            // and the others, too
            for (int i = start; i < start + size; i++) {
                if (isFirst) {
                    isFirst = false;
                } else {
                    out.append(' ');
                }

                byteValue = data[i] & 0xFF;
                out.append(new String(new byte[] { '0', 'x', HEX_CHAR[(byteValue & 0x00F0) >> 4],
                        HEX_CHAR[byteValue & 0x000F] }));
            }

            out.append("']");

            return out.toString();

        } else {
            StringBuilder sb = new StringBuilder(size);
            sb.append("ByteBuffer[len=").append(length).append(",str='").append(new String(data, start, size))
                    .append("']");

            return sb.toString();
        }
    }