public class HexDump
{
+ public static final String EOL =
+ System.getProperty("line.separator");
+// private static final StringBuffer _lbuffer = new StringBuffer(8);
+// private static final StringBuffer _cbuffer = new StringBuffer(2);
+ private static final char _hexcodes[] =
+ {
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D',
+ 'E', 'F'
+ };
+ private static final int _shifts[] =
+ {
+ 28, 24, 20, 16, 12, 8, 4, 0
+ };
+
// all static methods, so no need for a public constructor
private HexDump()
}
- public static final String EOL =
- System.getProperty("line.separator");
- private static final StringBuffer _lbuffer = new StringBuffer(8);
- private static final StringBuffer _cbuffer = new StringBuffer(2);
- private static final char _hexcodes[] =
- {
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D',
- 'E', 'F'
- };
- private static final int _shifts[] =
- {
- 28, 24, 20, 16, 12, 8, 4, 0
- };
-
private static String dump(final long value)
{
- _lbuffer.setLength(0);
+ StringBuffer buf = new StringBuffer();
+ buf.setLength(0);
for (int j = 0; j < 8; j++)
{
- _lbuffer
- .append(_hexcodes[ (( int ) (value >> _shifts[ j ])) & 15 ]);
+ buf.append( _hexcodes[ (( int ) (value >> _shifts[ j ])) & 15 ]);
}
- return _lbuffer.toString();
+ return buf.toString();
}
private static String dump(final byte value)
{
- _cbuffer.setLength(0);
+ StringBuffer buf = new StringBuffer();
+ buf.setLength(0);
for (int j = 0; j < 2; j++)
{
- _cbuffer.append(_hexcodes[ (value >> _shifts[ j + 6 ]) & 15 ]);
+ buf.append(_hexcodes[ (value >> _shifts[ j + 6 ]) & 15 ]);
}
- return _cbuffer.toString();
+ return buf.toString();
}
/**
retVal.append(']');
return retVal.toString();
}
+
/**
* Converts the parameter to a hex value.
*
}
return result.toString();
}
+
+ /**
+ * Dumps <code>bytesToDump</code> bytes to an output stream.
+ *
+ * @param in The stream to read from
+ * @param out The output stream
+ * @param start The index to use as the starting position for the left hand side label
+ * @param bytesToDump The number of bytes to output. Use -1 to read until the end of file.
+ */
+ public static void dump( InputStream in, PrintStream out, int start, int bytesToDump ) throws IOException
+ {
+ ByteArrayOutputStream buf = new ByteArrayOutputStream();
+ if (bytesToDump == -1)
+ {
+ int c = in.read();
+ while (c != -1)
+ {
+ buf.write(c);
+ c = in.read();
+ }
+ }
+ else
+ {
+ int bytesRemaining = bytesToDump;
+ while (bytesRemaining-- > 0)
+ {
+ int c = in.read();
+ if (c == -1)
+ break;
+ else
+ buf.write(c);
+ }
+ }
+
+ byte[] data = buf.toByteArray();
+ dump(data, 0, out, start, data.length);
+ }
}