Methods Summary |
---|
public byte[] | decode(byte[] array)Converts an array of character bytes representing hexidecimal values into an
array of bytes of those same values. The returned array will be half the
length of the passed array, as it takes two characters to represent any
given byte. An exception is thrown if the passed char array has an odd
number of elements.
return decodeHex(new String(array).toCharArray());
|
public java.lang.Object | decode(java.lang.Object object)Converts a String or an array of character bytes representing hexidecimal values into an
array of bytes of those same values. The returned array will be half the
length of the passed String or array, as it takes two characters to represent any
given byte. An exception is thrown if the passed char array has an odd
number of elements.
try {
char[] charArray = object instanceof String ? ((String) object).toCharArray() : (char[]) object;
return decodeHex(charArray);
} catch (ClassCastException e) {
throw new DecoderException(e.getMessage());
}
|
public static byte[] | decodeHex(char[] data)Converts an array of characters representing hexidecimal values into an
array of bytes of those same values. The returned array will be half the
length of the passed array, as it takes two characters to represent any
given byte. An exception is thrown if the passed char array has an odd
number of elements.
int len = data.length;
if ((len & 0x01) != 0) {
throw new DecoderException("Odd number of characters.");
}
byte[] out = new byte[len >> 1];
// two characters form the hex value.
for (int i = 0, j = 0; j < len; i++) {
int f = toDigit(data[j], j) << 4;
j++;
f = f | toDigit(data[j], j);
j++;
out[i] = (byte) (f & 0xFF);
}
return out;
|
public byte[] | encode(byte[] array)Converts an array of bytes into an array of bytes for the characters representing the
hexidecimal values of each byte in order. The returned array will be
double the length of the passed array, as it takes two characters to
represent any given byte.
return new String(encodeHex(array)).getBytes();
|
public java.lang.Object | encode(java.lang.Object object)Converts a String or an array of bytes into an array of characters representing the
hexidecimal values of each byte in order. The returned array will be
double the length of the passed String or array, as it takes two characters to
represent any given byte.
try {
byte[] byteArray = object instanceof String ? ((String) object).getBytes() : (byte[]) object;
return encodeHex(byteArray);
} catch (ClassCastException e) {
throw new EncoderException(e.getMessage());
}
|
public static char[] | encodeHex(byte[] data)Converts an array of bytes into an array of characters representing the hexidecimal values of each byte in order.
The returned array will be double the length of the passed array, as it takes two characters to represent any
given byte.
int l = data.length;
char[] out = new char[l << 1];
// two characters form the hex value.
for (int i = 0, j = 0; i < l; i++) {
out[j++] = DIGITS[(0xF0 & data[i]) >>> 4 ];
out[j++] = DIGITS[ 0x0F & data[i] ];
}
return out;
|
protected static int | toDigit(char ch, int index)Converts a hexadecimal character to an integer.
int digit = Character.digit(ch, 16);
if (digit == -1) {
throw new DecoderException("Illegal hexadecimal charcter " + ch + " at index " + index);
}
return digit;
|