Convert a byte array to a Hex string

From CodeCodex

Implementations[edit]

Java[edit]

JDK 1.5

 public static String getHexString(byte[] b) throws Exception {
  String result = "";
  for (int i=0; i < b.length; i++) {
    result += String.format("%02x", b[i] & 0xff);
  }
  return result;
}

The simple way

 public static String getHexString(byte[] b) throws Exception {
  String result = "";
  for (int i=0; i < b.length; i++) {
    result +=
          Integer.toString( ( b[i] & 0xff ) + 0x100, 16).substring( 1 );
  }
  return result;
}

A faster way

 import java.io.UnsupportedEncodingException;

public class StringUtils {

  public static String getHexString(byte[] raw) 
    throws UnsupportedEncodingException 
  {
    char[] hex = new char[2 * raw.length];
    int index = 0;

    for (byte b : raw) {
      int v = b & 0xFF;
      hex[index++] = Character.forDigit(v >>> 4, 16);
      hex[index++] = Character.forDigit(v & 0xF, 16);
    }
    return new String(hex);
  }

  public static void main(String args[]) throws Exception{
    byte[] byteArray = {
      (byte)255, (byte)254, (byte)253, 
      (byte)252, (byte)251, (byte)250
    };

    System.out.println(StringUtils.getHexString(byteArray));
    
    /*
     * output :
     *   fffefdfcfbfa
     */
    
  }
}