본문으로 바로가기

[JAVA] Hex 인코딩 디코딩 방법 (16 진수)

category Backend/Java 2021. 8. 13. 15:10

목차

    1. 자바 6 이상 기본 라이브러리

    - javax.xml.bind.DatatypeConverter를 이용한 Hex Encode, Decode입니다.

    - java-1.8.0-openjdk-1.8.0.242 에서 작동되는 것을 확인 했습니다. 버전에 따라 실행이 안될 수도 있습니다.

    import java.io.UnsupportedEncodingException;
    import javax.xml.bind.DatatypeConverter;
    
    public class HexClassImportConverter {
    
    	public static void main(String[] args) throws UnsupportedEncodingException {
    		
    		String testText = "hex Test Text";
    		byte[] testToBytes = testText.getBytes("UTF-8");
    		
    		//Hex 인코딩(Byte To String)
    		String encodeHexString = DatatypeConverter.printHexBinary(testToBytes);
    		
    		//Hex 디코딩(String to Byte)
    		byte[] decodeHexByte = DatatypeConverter.parseHexBinary(encodeHexString);
    		
    		System.out.println("인코딩 전: " + testText);
    		System.out.println("인코딩: " + encodeHexString);
    		System.out.println("디코딩: " + new String(decodeHexByte));	
    	}
    	
    }

    2. Apache Commons 라이브러리

    http://mvnrepository.com/artifact/commons-codec/commons-codec/1.9

    - org.apache.commons.codec.binary.Hex를 이용한 Hex Encode, Decode입니다.

     

    - 다음 방식을 이용해 Hex 인코딩을 하려면 위의 링크에서 jar파일을 다운로드하거나 Maven을 이용해서 프로젝트에 추가해야 합니다.

    (프로젝트에 jar파일 추가하는 방법을 모르신다면 아래의 링크를 이용해 주세요)

     

    [Eclipse] 프로젝트에 jar 파일 추가하는 방법 (자바 라이브러리 추가)

    목차 0. jar파일 이란? - JAR(Java Archive, 자바 아카이브)는 여러 개의 자바 클래스 파일과, 클래스들이 이용하는 관련 리소스(텍스트, 그림 등) 및 메타데이터를 하나의 파일로 모아서 자바 플랫폼

    veneas.tistory.com

    import java.io.UnsupportedEncodingException;
    import org.apache.commons.codec.DecoderException;
    import org.apache.commons.codec.binary.Hex;
    
    public class HexClassImportApache {
    
    	public static void main(String[] args) throws UnsupportedEncodingException, DecoderException {
        
    		String testText = "hex Test Text";
    		byte[] testToBytes = testText.getBytes("UTF-8");
    	
    		//Hex 인코딩(Byte To String)
    		String encodeHexString = Hex.encodeHexString(testToBytes);
            
     		//Hex 인코딩(Byte To Char)
     		char[] encodeHexChar = Hex.encodeHex(testToBytes);
            
     		//Hex 디코딩
    		byte[] decodeHexByte = Hex.decodeHex(encodeHexString.toCharArray());
    
    		System.out.println("인코딩 전: " + testText);
    		System.out.println("인코딩(String): " + encodeHexString);
    		System.out.println("인코딩(Char): " + new String(encodeHexChar));
    		System.out.println("디코딩: " + new String(decodeHexByte));
    	}
    
    }