diff options
Diffstat (limited to 'src/org/xbill/DNS/utils/hexdump.java')
-rw-r--r-- | src/org/xbill/DNS/utils/hexdump.java | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/org/xbill/DNS/utils/hexdump.java b/src/org/xbill/DNS/utils/hexdump.java new file mode 100644 index 0000000..1a79a40 --- /dev/null +++ b/src/org/xbill/DNS/utils/hexdump.java @@ -0,0 +1,56 @@ +// Copyright (c) 1999-2004 Brian Wellington (bwelling@xbill.org) + +package org.xbill.DNS.utils; + +/** + * A routine to produce a nice looking hex dump + * + * @author Brian Wellington + */ + +public class hexdump { + +private static final char [] hex = "0123456789ABCDEF".toCharArray(); + +/** + * Dumps a byte array into hex format. + * @param description If not null, a description of the data. + * @param b The data to be printed. + * @param offset The start of the data in the array. + * @param length The length of the data in the array. + */ +public static String +dump(String description, byte [] b, int offset, int length) { + StringBuffer sb = new StringBuffer(); + + sb.append(length + "b"); + if (description != null) + sb.append(" (" + description + ")"); + sb.append(':'); + + int prefixlen = sb.toString().length(); + prefixlen = (prefixlen + 8) & ~ 7; + sb.append('\t'); + + int perline = (80 - prefixlen) / 3; + for (int i = 0; i < length; i++) { + if (i != 0 && i % perline == 0) { + sb.append('\n'); + for (int j = 0; j < prefixlen / 8 ; j++) + sb.append('\t'); + } + int value = (int)(b[i + offset]) & 0xFF; + sb.append(hex[(value >> 4)]); + sb.append(hex[(value & 0xF)]); + sb.append(' '); + } + sb.append('\n'); + return sb.toString(); +} + +public static String +dump(String s, byte [] b) { + return dump(s, b, 0, b.length); +} + +} |