FileDocCategorySizeDatePackage
Hex.javaAPI DocAndroid 1.5 API7381Wed May 06 22:41:10 BST 2009org.apache.commons.codec.binary

Hex

public class Hex extends Object implements BinaryEncoder, BinaryDecoder
Hex encoder and decoder.
since
1.1
author
Apache Software Foundation
version
$Id: Hex.java,v 1.13 2004/04/18 18:22:33 ggregory Exp $

Fields Summary
private static final char[]
DIGITS
Used building output as Hex
Constructors Summary
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.

param
array An array of character bytes containing hexidecimal digits
return
A byte array containing binary data decoded from the supplied byte array (representing characters).
throws
DecoderException Thrown if an odd number of characters is supplied to this function
see
#decodeHex(char[])

        return decodeHex(new String(array).toCharArray());
    
public java.lang.Objectdecode(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.

param
object A String or, an array of character bytes containing hexidecimal digits
return
A byte array containing binary data decoded from the supplied byte array (representing characters).
throws
DecoderException Thrown if an odd number of characters is supplied to this function or the object is not a String or char[]
see
#decodeHex(char[])

        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.

param
data An array of characters containing hexidecimal digits
return
A byte array containing binary data decoded from the supplied char array.
throws
DecoderException Thrown if an odd number or illegal of characters is supplied


                                                                                                                    
           

        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.

param
array a byte[] to convert to Hex characters
return
A byte[] containing the bytes of the hexidecimal characters
see
#encodeHex(byte[])

        return new String(encodeHex(array)).getBytes();
    
public java.lang.Objectencode(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.

param
object a String, or byte[] to convert to Hex characters
return
A char[] containing hexidecimal characters
throws
EncoderException Thrown if the given object is not a String or byte[]
see
#encodeHex(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.

param
data a byte[] to convert to Hex characters
return
A char[] containing hexidecimal characters


        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 inttoDigit(char ch, int index)
Converts a hexadecimal character to an integer.

param
ch A character to convert to an integer digit
param
index The index of the character in the source
return
An integer
throws
DecoderException Thrown if ch is an illegal hex character

        int digit = Character.digit(ch, 16);
        if (digit == -1) {
            throw new DecoderException("Illegal hexadecimal charcter " + ch + " at index " + index);
        }
        return digit;