martian-hex
Simple tools for encoding binary to hexadecimal and hexadecimal to binary.
Separate HexEncoder (for binary to hex) and HexDecoder (hex to binary) interfaces are provided, as well as HexCodec (both directions).
Several implementations are provided supporting several different hex formats, plus adapters for defining your own. Predefined HexCodecs can be found in StandardHexCodecs.java.
Static methods provided by Hex.java provide quick access to the StandardHexCodecs.DEFAULT HexCodec.
Encoding and Decoding
Encoding methods accept binary via byte arrays and InputStreams and can return Strings or encode directly to PrintStreams or PrintWriters. See HexEncoder.java for all encoding options.
Decoding methods accept hexadecimal in Strings or Readers and can return byte arrays or decode directly to OutputStreams. See HexDecoder.java for all decoding options.
Usage Examples
Bytes to Simple Hex
// byte array to string
byte[] b = "Here is an example.".getBytes();
System.out.println(Hex.encode(b)); // equivalent to StandardHexCodecs.DEFAULT.encode
Output: 4865726520697320616e206578616d706c652e
Simple Hex to Bytes
byte[] b = Hex.decode("4865726520697320616e206578616d706c652e");
System.out.println(new String(b)); // equivalent to StandardHexCodecs.DEFAULT.decode
Output: Here is an example.
Delimited by Colons, 16 bytes per line
String s = "Here is an example.";
StandardHexCodecs.SIMPLE.encode(s.getBytes(), System.out); // the same HexCodec can decode this back to binary as well
Output: 48:65:72:65:20:69:73:20:61:6e:20:65:78:61:6d:70 6c:65:2e
Hex Dump
byte[] b = new byte[67];
Random r = new Random();
r.nextBytes(b);
StandardHexCodecs.HEXDUMP.encode(b, System.out); // the same HexCodec can decode this back to binary as well
Output:
00000000: c9 85 90 e5 3c ca 13 72 82 52 5b c9 39 92 4b 41 ....<..r.R[.9.KA
00000010: b9 a8 f8 9a e9 53 0d a3 18 84 2e c0 8a 80 b5 aa .....S..........
00000020: af b5 cf b5 25 2a 36 c3 52 ff b1 f2 b4 ae 13 33 ....%*6.R......3
00000030: bf 33 8d ed 17 9c 62 a0 91 80 fc 67 d0 8e 5d 6f .3....b....g..]o
00000040: 8f af 85