Convert a byte array to a Hex string

来源:互联网 发布:中国房地产泡沫知乎 编辑:程序博客网 时间:2024/05/17 22:57

1. 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;}


2. A faster way

import java.io.UnsupportedEncodingException;public class StringUtils {      static final byte[] HEX_CHAR_TABLE = {    (byte)'0', (byte)'1', (byte)'2', (byte)'3',    (byte)'4', (byte)'5', (byte)'6', (byte)'7',    (byte)'8', (byte)'9', (byte)'a', (byte)'b',    (byte)'c', (byte)'d', (byte)'e', (byte)'f'  };      public static String getHexString(byte[] raw)     throws UnsupportedEncodingException   {    byte[] hex = new byte[2 * raw.length];    int index = 0;    for (byte b : raw) {      int v = b & 0xFF;      hex[index++] = HEX_CHAR_TABLE[v >>> 4];      hex[index++] = HEX_CHAR_TABLE[v & 0xF];    }    return new String(hex, "ASCII");  }  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     */      }}


3.A more elegant (based on a suggestion by Lew on usenet-cljp)

static final String HEXES = "0123456789ABCDEF";  public static String getHex( byte [] raw ) {    if ( raw == null ) {      return null;    }    final StringBuilder hex = new StringBuilder( 2 * raw.length );    for ( final byte b : raw ) {      hex.append(HEXES.charAt((b & 0xF0) >> 4))         .append(HEXES.charAt((b & 0x0F)));    }    return hex.toString();  }



原创粉丝点击