Class Hex

java.lang.Object
de.cuioss.tools.codec.Hex

public class Hex extends Object

Overview

Converts hexadecimal Strings. The Charset used for certain operation can be set, the default is set in StandardCharsets.UTF_8 This class is thread-safe.

Usage

 String roundtrip = "roundtrip";
 assertEquals(roundtrip, new String(Hex.decodeHex(Hex.encodeHex(roundtrip.getBytes()))));
 
Author:
https://github.com/apache/commons-codec/blob/master/src/main/java/org/apache/commons/codec/binary/Hex.java
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final Charset
    Default charset is StandardCharsets.UTF_8
  • Constructor Summary

    Constructors
    Constructor
    Description
    Hex()
    Creates a new codec with the default charset name DEFAULT_CHARSET
    Hex(String charsetName)
    Creates a new codec with the given charset name.
    Hex(Charset charset)
    Creates a new codec with the given Charset.
  • Method Summary

    Modifier and Type
    Method
    Description
    byte[]
    decode(byte[] array)
    Converts an array of character bytes representing hexadecimal values into an array of bytes of those same values.
    decode(Object object)
    Converts a String or an array of character bytes representing hexadecimal values into an array of bytes of those same values.
    byte[]
    Converts a buffer of character bytes representing hexadecimal values into an array of bytes of those same values.
    static byte[]
    decodeHex(char[] data)
    Converts an array of characters representing hexadecimal values into an array of bytes of those same values.
    static byte[]
    Converts a String representing hexadecimal values into an array of bytes of those same values.
    byte[]
    encode(byte[] array)
    Converts an array of bytes into an array of bytes for the characters representing the hexadecimal values of each byte in order.
    encode(Object object)
    Converts a String or an array of bytes into an array of characters representing the hexadecimal values of each byte in order.
    byte[]
    Converts byte buffer into an array of bytes for the characters representing the hexadecimal values of each byte in order.
    static char[]
    encodeHex(byte[] data)
    Converts an array of bytes into an array of characters representing the hexadecimal values of each byte in order.
    static char[]
    encodeHex(byte[] data, boolean toLowerCase)
    Converts an array of bytes into an array of characters representing the hexadecimal values of each byte in order.
    protected static char[]
    encodeHex(byte[] data, char[] toDigits)
    Converts an array of bytes into an array of characters representing the hexadecimal values of each byte in order.
    static char[]
    Converts a byte buffer into an array of characters representing the hexadecimal values of each byte in order.
    static char[]
    encodeHex(ByteBuffer data, boolean toLowerCase)
    Converts a byte buffer into an array of characters representing the hexadecimal values of each byte in order.
    protected static char[]
    encodeHex(ByteBuffer byteBuffer, char[] toDigits)
    Converts a byte buffer into an array of characters representing the hexadecimal values of each byte in order.
    static String
    encodeHexString(byte[] data)
    Converts an array of bytes into a String representing the hexadecimal values of each byte in order.
    static String
    encodeHexString(byte[] data, boolean toLowerCase)
    Converts an array of bytes into a String representing the hexadecimal values of each byte in order.
    static String
    Converts a byte buffer into a String representing the hexadecimal values of each byte in order.
    static String
    encodeHexString(ByteBuffer data, boolean toLowerCase)
    Converts a byte buffer into a String representing the hexadecimal values of each byte in order.
    protected static int
    toDigit(char ch, int index)
    Converts a hexadecimal character to an integer.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • Hex

      public Hex()
      Creates a new codec with the default charset name DEFAULT_CHARSET
    • Hex

      public Hex(Charset charset)
      Creates a new codec with the given Charset.
      Parameters:
      charset - the charset.
    • Hex

      public Hex(String charsetName)
      Creates a new codec with the given charset name.
      Parameters:
      charsetName - the charset name.
      Throws:
      UnsupportedCharsetException - If the named charset is unavailable throws UnsupportedCharsetException if the named charset is unavailable
  • Method Details

    • decodeHex

      public static byte[] decodeHex(String data) throws DecoderException
      Converts a String representing hexadecimal values into an array of bytes of those same values. The returned array will be half the length of the passed String, as it takes two characters to represent any given byte. An exception is thrown if the passed String has an odd number of elements.
      Parameters:
      data - A String containing hexadecimal digits
      Returns:
      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
    • decodeHex

      public static byte[] decodeHex(char[] data) throws DecoderException
      Converts an array of characters representing hexadecimal 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.
      Parameters:
      data - An array of characters containing hexadecimal digits
      Returns:
      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
    • encodeHex

      public static char[] encodeHex(byte[] data)
      Converts an array of bytes into an array of characters representing the hexadecimal 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.
      Parameters:
      data - a byte[] to convert to Hex characters
      Returns:
      A char[] containing lower-case hexadecimal characters
    • encodeHex

      public static char[] encodeHex(ByteBuffer data)
      Converts a byte buffer into an array of characters representing the hexadecimal 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.

      All bytes identified by Buffer.remaining() will be used; after this method the value remaining() will be zero.

      Parameters:
      data - a byte buffer to convert to Hex characters
      Returns:
      A char[] containing lower-case hexadecimal characters
    • encodeHex

      public static char[] encodeHex(byte[] data, boolean toLowerCase)
      Converts an array of bytes into an array of characters representing the hexadecimal 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.
      Parameters:
      data - a byte[] to convert to Hex characters
      toLowerCase - true converts to lowercase, false to uppercase
      Returns:
      A char[] containing hexadecimal characters in the selected case
    • encodeHex

      public static char[] encodeHex(ByteBuffer data, boolean toLowerCase)
      Converts a byte buffer into an array of characters representing the hexadecimal 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.

      All bytes identified by Buffer.remaining() will be used; after this method the value remaining() will be zero.

      Parameters:
      data - a byte buffer to convert to Hex characters
      toLowerCase - true converts to lowercase, false to uppercase
      Returns:
      A char[] containing hexadecimal characters in the selected case
    • encodeHex

      protected static char[] encodeHex(byte[] data, char[] toDigits)
      Converts an array of bytes into an array of characters representing the hexadecimal 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.
      Parameters:
      data - a byte[] to convert to Hex characters
      toDigits - the output alphabet (must contain at least 16 chars)
      Returns:
      A char[] containing the appropriate characters from the alphabet For best results, this should be either upper- or lower-case hex.
    • encodeHex

      protected static char[] encodeHex(ByteBuffer byteBuffer, char[] toDigits)
      Converts a byte buffer into an array of characters representing the hexadecimal 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.

      All bytes identified by Buffer.remaining() will be used; after this method the value remaining() will be zero.

      Parameters:
      byteBuffer - a byte buffer to convert to Hex characters
      toDigits - the output alphabet (must be at least 16 characters)
      Returns:
      A char[] containing the appropriate characters from the alphabet For best results, this should be either upper- or lower-case hex.
    • encodeHexString

      public static String encodeHexString(byte[] data)
      Converts an array of bytes into a String representing the hexadecimal values of each byte in order. The returned String will be double the length of the passed array, as it takes two characters to represent any given byte.
      Parameters:
      data - a byte[] to convert to Hex characters
      Returns:
      A String containing lower-case hexadecimal characters
    • encodeHexString

      public static String encodeHexString(byte[] data, boolean toLowerCase)
      Converts an array of bytes into a String representing the hexadecimal values of each byte in order. The returned String will be double the length of the passed array, as it takes two characters to represent any given byte.
      Parameters:
      data - a byte[] to convert to Hex characters
      toLowerCase - true converts to lowercase, false to uppercase
      Returns:
      A String containing lower-case hexadecimal characters
    • encodeHexString

      public static String encodeHexString(ByteBuffer data)
      Converts a byte buffer into a String representing the hexadecimal values of each byte in order. The returned String will be double the length of the passed array, as it takes two characters to represent any given byte.

      All bytes identified by Buffer.remaining() will be used; after this method the value remaining() will be zero.

      Parameters:
      data - a byte buffer to convert to Hex characters
      Returns:
      A String containing lower-case hexadecimal characters
    • encodeHexString

      public static String encodeHexString(ByteBuffer data, boolean toLowerCase)
      Converts a byte buffer into a String representing the hexadecimal values of each byte in order. The returned String will be double the length of the passed array, as it takes two characters to represent any given byte.

      All bytes identified by Buffer.remaining() will be used; after this method the value remaining() will be zero.

      Parameters:
      data - a byte buffer to convert to Hex characters
      toLowerCase - true converts to lowercase, false to uppercase
      Returns:
      A String containing lower-case hexadecimal characters
    • toDigit

      protected static int toDigit(char ch, int index) throws DecoderException
      Converts a hexadecimal character to an integer.
      Parameters:
      ch - A character to convert to an integer digit
      index - The index of the character in the source
      Returns:
      An integer
      Throws:
      DecoderException - Thrown if ch is an illegal hex character
    • decode

      public byte[] decode(byte[] array) throws DecoderException
      Converts an array of character bytes representing hexadecimal 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.
      Parameters:
      array - An array of character bytes containing hexadecimal digits
      Returns:
      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 Also:
    • decode

      public byte[] decode(ByteBuffer buffer) throws DecoderException
      Converts a buffer of character bytes representing hexadecimal 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.

      All bytes identified by Buffer.remaining() will be used; after this method the value remaining() will be zero.

      Parameters:
      buffer - An array of character bytes containing hexadecimal digits
      Returns:
      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 Also:
    • decode

      public Object decode(Object object) throws DecoderException
      Converts a String or an array of character bytes representing hexadecimal 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.
      Parameters:
      object - A String, ByteBuffer, byte[], or an array of character bytes containing hexadecimal digits
      Returns:
      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 Also:
    • encode

      public byte[] encode(byte[] array)
      Converts an array of bytes into an array of bytes for the characters representing the hexadecimal 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.

      The conversion from hexadecimal characters to the returned bytes is performed with the charset named by #getCharset().

      Parameters:
      array - a byte[] to convert to Hex characters
      Returns:
      A byte[] containing the bytes of the lower-case hexadecimal characters No longer throws IllegalStateException if the charsetName is invalid.
      See Also:
    • encode

      public byte[] encode(ByteBuffer array)
      Converts byte buffer into an array of bytes for the characters representing the hexadecimal 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.

      The conversion from hexadecimal characters to the returned bytes is performed with the charset named by #getCharset().

      All bytes identified by Buffer.remaining() will be used; after this method the value remaining() will be zero.

      Parameters:
      array - a byte buffer to convert to Hex characters
      Returns:
      A byte[] containing the bytes of the lower-case hexadecimal characters
      See Also:
    • encode

      public Object encode(Object object) throws EncoderException
      Converts a String or an array of bytes into an array of characters representing the hexadecimal 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.

      The conversion from hexadecimal characters to bytes to be encoded to performed with the charset named by #getCharset().

      Parameters:
      object - a String, ByteBuffer, or byte[] to convert to Hex characters
      Returns:
      A char[] containing lower-case hexadecimal characters
      Throws:
      EncoderException - Thrown if the given object is not a String or byte[]
      See Also: