Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* ************************************************************************
  #
  #  DivConq
  #
  #  http://divconq.com/
  #
  #  Copyright:
  #    Copyright 2014 eTimeline, LLC. All rights reserved.
  #
 #  License:
 #    See the license.txt file in the project's top-level directory for details.
 #
 #  Authors:
 #    * Andy White
 #
 ************************************************************************ */
 package divconq.util;
 
 
 public class HexUtil {
Take a chunk of memory and format as a hex string (set the memory position before calling, use 0 if all memory desired)

Parameters:
buffer bytes to format
Returns:
formatted hex string
 
 	public static String bufferToHex(Memory buffer) {
 		if (buffer == null)
 			return null;
 		
 		return HexUtil.bufferToHex(bufferbuffer.getLength());
 	}

Take a chunk of memory and format as a hex string (set the memory position before calling)

Parameters:
buffer bytes to format
length how many bytes past start to format
Returns:
formatted hex string
 
 	public static String bufferToHex(Memory bufferint length) {
 		if (buffer == null)
 			return null;
 		
 		StringBuilder hexString = new StringBuilder(length << 1);
 		char highNibble;
 		char lowNibble;
 
 		for (int i = 0; i < lengthi++) {
 			int cb = buffer.readByte();
 			
 			highNibble = .[(cb & 0xF0) >> 4];
 	  	  	lowNibble  = .[cb & 0x0F];
 
 	  	  	hexString.append(highNibble);
 	  	  	hexString.append(lowNibble);
 		}
 		
 		return hexString.toString();
 	}

Take an array of bytes and format as a hex string

Parameters:
buffer bytes to format
Returns:
formatted hex string
 
 	public static String bufferToHex(byte[] buffer) {
 		if (buffer == null)
 			return null;
 		
 		return HexUtil.bufferToHex(buffer, 0, buffer.length);
 	}

Take a range of bytes and format as a hex string

Parameters:
buffer bytes to format
startOffset position in buffer to start
length how many bytes past start to format
Returns:
formatted hex string
 
 	public static String bufferToHex(byte[] bufferint startOffsetint length) {
 		if (buffer == null)
 			return null;
 		
 		StringBuilder hexString = new StringBuilder(length << 1);
 		int  endOffset = startOffset + length;
 		char highNibble;
 		char lowNibble;
 
 		for (int i = startOffseti < endOffseti++) {
 			highNibble = .[(buffer[i] & 0xF0) >> 4];
 	  	  	lowNibble  = .[buffer[i] & 0x0F];
 
 	  	  	hexString.append(highNibble);
	  	  	hexString.append(lowNibble);
		}
		return hexString.toString();
	}
	public static String charToHex(int chr) {
		StringBuilder hexString = new StringBuilder(2);
		char highNibble;
		char lowNibble;
		highNibble = .[(chr & 0xF0) >> 4];
  	  	lowNibble  = .[chr & 0x0F];
  	  	hexString.append(highNibble);
  	  	hexString.append(lowNibble);
		return hexString.toString();
	}
    
	public static byte[] decodeHexClean(String data) {
		return HexUtil.decodeHex(data.replace(":""").replace("-"""));
    }
    
convert hex characters into corresponding byte array

Parameters:
data hex characters
Returns:
bytes from hex
    public static byte[] decodeHex(CharSequence data) {
    	if (data == null)
    		return null;
    	
        int len = data.length();
        if ((len & 0x01) != 0) 
        	return null;
        byte[] out = new byte[len >> 1];
        // two characters form the hex value.
        for (int i = 0, j = 0; j < leni++) {
        	int d1 = Character.digit(data.charAt(j++), 16);
        	int d2 = Character.digit(data.charAt(j++), 16);
        	
        	if ((d1 == -1) || (d2 == -1))
        		return null;
        	
            int f = (d1 << 4) | d2;
            out[i] = (byte) (f & 0xFF);
        }
        return out;
    }	
    
	static public void hexDump(byte[] arrayint offsetint length) {
		int d = 0;
		for (int i = 0; i < lengthi++) {
			..print(HexUtil.charToHex(array[offset + i]) + " ");
			d++;
			if (d == 32) {
				d = 0;
			}
		}
	}
    public static final char HexChars[] = { '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' };
New to GrepCode? Check out our FAQ X