Created
April 24, 2012 17:32
-
-
Save chrishuan9/2481799 to your computer and use it in GitHub Desktop.
Fast Hex 2 byte[]
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Source:http://www.rgagnon.com/javadetails/java-0596.html | |
//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 { | |
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 | |
*/ | |
} | |
} | |
//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(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment