Here you can find the source of dump(byte[] buffer, int start, int size, PrintStream out)
Parameter | Description |
---|---|
buffer | buffer to be dumped |
start | offset in the buffer to start the dump from |
size | size of the dumped area |
out | stream to print the dump to |
public static void dump(byte[] buffer, int start, int size, PrintStream out)
//package com.java2s; /*/*w w w . j a va 2 s .c o m*/ * $Id: Util.java,v 1.8 2002/07/15 02:15:03 skavish Exp $ * * =========================================================================== * * The JGenerator Software License, Version 1.0 * * Copyright (c) 2000 Dmitry Skavish (skavish@usa.net). All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by Dmitry Skavish * (skavish@usa.net, http://www.flashgap.com/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The name "The JGenerator" must not be used to endorse or promote * products derived from this software without prior written permission. * For written permission, please contact skavish@usa.net. * * 5. Products derived from this software may not be called "The JGenerator" * nor may "The JGenerator" appear in their names without prior written * permission of Dmitry Skavish. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL DMITRY SKAVISH OR THE OTHER * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * */ import java.io.*; public class Main { private static final char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; /** * Prints hex dump of part of byte array to specified stream * * @param buffer buffer to be dumped * @param start offset in the buffer to start the dump from * @param size size of the dumped area * @param out stream to print the dump to */ public static void dump(byte[] buffer, int start, int size, PrintStream out) { StringBuffer sb = new StringBuffer(); int pos = 0; for (int i = 0; i < size / 16; i++) { _dump(buffer, start + pos, 16, out); pos += 16; out.println(); } _dump(buffer, start + pos, size - pos, out); out.println(); } private static void _dump(byte[] buffer, int pos, int size, PrintStream out) { if (size == 0) return; for (int i = 0; i < 16; i++) { if (i >= size) { out.print(".. "); } else { out.print(b2h(buffer[pos + i]) + ' '); } } for (int i = 0; i < 16; i++) { if (i >= size) { out.print(" "); } else { out.print(toPrint((char) buffer[pos + i])); } } } /** * Returns hexadecimal representation of specified byte * * @param v specified byte * @return hex repsentation of specified byte */ public static String b2h(int v) { char[] r = new char[2]; r[0] = digits[(v & 0xf0) >> 4]; r[1] = digits[(v & 0x0f)]; return new String(r); } /** * Returns specified char if it's printable or '.' * * @param ch char to be converted to printable char * @return printable char */ public static char toPrint(char ch) { if (Character.isISOControl(ch)) return '.'; return ch; } }