public static byte [ ] decodeHex ( char [ ] data ) throws DecoderException { 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 ; }
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 .