Hex dump with byte positions
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353319 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
3bde9312dd
commit
79f4e5f844
@ -56,6 +56,7 @@
|
|||||||
package org.apache.poi.util;
|
package org.apache.poi.util;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.text.DecimalFormat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dump data in hexadecimal format; derived from a HexDump utility I
|
* dump data in hexadecimal format; derived from a HexDump utility I
|
||||||
@ -78,7 +79,7 @@ public class HexDump
|
|||||||
};
|
};
|
||||||
private static final int _shifts[] =
|
private static final int _shifts[] =
|
||||||
{
|
{
|
||||||
28, 24, 20, 16, 12, 8, 4, 0
|
60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -307,20 +308,27 @@ public class HexDump
|
|||||||
*/
|
*/
|
||||||
public static String toHex(final byte[] value, final int bytesPerLine)
|
public static String toHex(final byte[] value, final int bytesPerLine)
|
||||||
{
|
{
|
||||||
|
final int digits =
|
||||||
|
(int) Math.round(Math.log(value.length) / Math.log(10) + 0.5);
|
||||||
|
final StringBuffer formatString = new StringBuffer();
|
||||||
|
for (int i = 0; i < digits; i++)
|
||||||
|
formatString.append('0');
|
||||||
|
formatString.append(": ");
|
||||||
|
final DecimalFormat format = new DecimalFormat(formatString.toString());
|
||||||
StringBuffer retVal = new StringBuffer();
|
StringBuffer retVal = new StringBuffer();
|
||||||
retVal.append('[');
|
retVal.append(format.format(0));
|
||||||
int i = -1;
|
int i = -1;
|
||||||
for(int x = 0; x < value.length; x++)
|
for(int x = 0; x < value.length; x++)
|
||||||
{
|
{
|
||||||
if (++i == bytesPerLine)
|
if (++i == bytesPerLine)
|
||||||
{
|
{
|
||||||
retVal.append("\n ");
|
retVal.append('\n');
|
||||||
|
retVal.append(format.format(x));
|
||||||
i = 0;
|
i = 0;
|
||||||
}
|
}
|
||||||
retVal.append(toHex(value[x]));
|
retVal.append(toHex(value[x]));
|
||||||
retVal.append(", ");
|
retVal.append(", ");
|
||||||
}
|
}
|
||||||
retVal.append(']');
|
|
||||||
return retVal.toString();
|
return retVal.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -357,13 +365,24 @@ public class HexDump
|
|||||||
return toHex(value, 8);
|
return toHex(value, 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts the parameter to a hex value.
|
||||||
|
*
|
||||||
|
* @param value The value to convert
|
||||||
|
* @return The result right padded with 0
|
||||||
|
*/
|
||||||
|
public static String toHex(final long value)
|
||||||
|
{
|
||||||
|
return toHex(value, 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private static String toHex(final long value, final int digits)
|
private static String toHex(final long value, final int digits)
|
||||||
{
|
{
|
||||||
StringBuffer result = new StringBuffer(digits);
|
StringBuffer result = new StringBuffer(digits);
|
||||||
for (int j = 0; j < digits; j++)
|
for (int j = 0; j < digits; j++)
|
||||||
{
|
{
|
||||||
result.append( _hexcodes[ (int) ((value >> _shifts[ j + (8 - digits) ]) & 15)]);
|
result.append( _hexcodes[ (int) ((value >> _shifts[ j + (16 - digits) ]) & 15)]);
|
||||||
}
|
}
|
||||||
return result.toString();
|
return result.toString();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user