程式扎記: [ Java代碼範本 ] Convert a byte array to a hex String

標籤

2010年11月22日 星期一

[ Java代碼範本 ] Convert a byte array to a hex String


轉載自 這裡
* Simple way :
  1. public static String getHexString(byte[] b) throws Exception {  
  2.   String result = "";  
  3.   for (int i=0; i < b.length; i++) {  
  4.     result +=  
  5.           Integer.toString( ( b[i] & 0xff ) + 0x10016).substring( 1 );  
  6.   }  
  7.   return result;  
  8. }  

* A faster way :
  1. import java.io.UnsupportedEncodingException;  
  2.   
  3. public class StringUtils {  
  4.       
  5.   static final byte[] HEX_CHAR_TABLE = {  
  6.     (byte)'0', (byte)'1', (byte)'2', (byte)'3',  
  7.     (byte)'4', (byte)'5', (byte)'6', (byte)'7',  
  8.     (byte)'8', (byte)'9', (byte)'a', (byte)'b',  
  9.     (byte)'c', (byte)'d', (byte)'e', (byte)'f'  
  10.   };      
  11.   
  12.   public static String getHexString(byte[] raw)   
  13.     throws UnsupportedEncodingException   
  14.   {  
  15.     byte[] hex = new byte[2 * raw.length];  
  16.     int index = 0;  
  17.   
  18.     for (byte b : raw) {  
  19.       int v = b & 0xFF;  
  20.       hex[index++] = HEX_CHAR_TABLE[v >>> 4];  
  21.       hex[index++] = HEX_CHAR_TABLE[v & 0xF];  
  22.     }  
  23.     return new String(hex, "ASCII");  
  24.   }  
  25.   
  26.   public static void main(String args[]) throws Exception{  
  27.     byte[] byteArray = {  
  28.       (byte)255, (byte)254, (byte)253,   
  29.       (byte)252, (byte)251, (byte)250  
  30.     };  
  31.   
  32.     System.out.println(StringUtils.getHexString(byteArray));  
  33.       
  34.     /* 
  35.      * output : 
  36.      *   fffefdfcfbfa 
  37.      */  
  38.       
  39.   }  
  40. }  

* A elegant way :
  1. static final String HEXES = "0123456789ABCDEF";  
  2. public static String getHex( byte [] raw ) {  
  3.   if ( raw == null ) {  
  4.     return null;  
  5.   }  
  6.   final StringBuilder hex = new StringBuilder( 2 * raw.length );  
  7.   for ( final byte b : raw ) {  
  8.     hex.append(HEXES.charAt((b & 0xF0) >> 4))  
  9.        .append(HEXES.charAt((b & 0x0F)));  
  10.   }  
  11.   return hex.toString();  
  12. }  

This message was edited 1 time. Last update was at 24/03/2010 20:46:58

沒有留言:

張貼留言

網誌存檔

關於我自己

我的相片
Where there is a will, there is a way!