1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.imaging.common;
18
19 import java.io.IOException;
20 import java.io.PrintWriter;
21 import java.io.StringWriter;
22 import java.nio.ByteOrder;
23 import java.util.logging.Level;
24 import java.util.logging.Logger;
25
26 public class BinaryFileParser {
27
28 private static final Logger LOGGER = Logger.getLogger(BinaryFileParser.class.getName());
29
30
31
32
33 private ByteOrder byteOrder = ByteOrder.BIG_ENDIAN;
34
35
36
37
38 public BinaryFileParser() {
39
40 }
41
42 public BinaryFileParser(final ByteOrder byteOrder) {
43 this.byteOrder = byteOrder;
44 }
45
46 protected final void debugNumber(final PrintWriter pw, final String msg, final int data, final int bytes) {
47 pw.print(msg + ": " + data + " (");
48 int byteData = data;
49 for (int i = 0; i < bytes; i++) {
50 if (i > 0) {
51 pw.print(",");
52 }
53 final int singleByte = 0xff & byteData;
54 pw.print((char) singleByte + " [" + singleByte + "]");
55 byteData >>= 8;
56 }
57 pw.println(") [0x" + Integer.toHexString(data) + ", " + Integer.toBinaryString(data) + "]");
58 pw.flush();
59 }
60
61 protected final void debugNumber(final String msg, final int data, final int bytes) {
62 try (StringWriter sw = new StringWriter();
63 PrintWriter pw = new PrintWriter(sw)) {
64 debugNumber(pw, msg, data, bytes);
65 pw.flush();
66 sw.flush();
67 LOGGER.fine(sw.toString());
68 } catch (final IOException e) {
69 LOGGER.log(Level.SEVERE, e.getMessage(), e);
70 }
71 }
72
73 public ByteOrder getByteOrder() {
74 return byteOrder;
75 }
76
77 protected void setByteOrder(final ByteOrder byteOrder) {
78 this.byteOrder = byteOrder;
79 }
80 }