IT/development

[Java] Java String convert to byte[], byte[] convert to String

알 수 없는 사용자 2022. 11. 23. 07:05
반응형

목차

    Java String convert to byte[], byte[] convert to String

    java에서 문자열을 byte[]로 변환하고 반대로 byte[]를 문자열로 변환해야 되는 경우가 종종 생긴다.

    만일 DB 테이블이 한글을 지원하지 않는 charset인 경우 DB테이블의 charset에 맞게 인코딩하여 숫자로 저장 후 사용자에게 보여줄 때는 디코딩한다. 그리고 문자열 암호화 등에도 쓰이는데 그 방법을 기록한다.

     

    String convert to byte[]😄

    .getBytes() 메서드 이용

    .getBytes()에 매개변수를 아무것도 안 넣으면 기본값 charset이 사용됨

    .getBytes("UTF-*8"); 이런식으로 매개변수에 charset 설정 시 해당 charset으로 인코딩되는데 이 때는 반드시 예외처리 해야 함(eclipse같은 IDE에서도 예외처리하라는 에러 발생)

    매개변수를 넣으면 매개변수의 charset이 적용됨

    package java_tmp.test.lsy;
    
    public class Test1 {
    
    	public static void main(String[] args){
    		
    		String str = "내사랑에 세상도 양보한 널 나 끝까지 아끼며 사랑할게 약속해줘 서로만 바라보다 먼 훗날 우리 같은날에 떠나";
            // 기본 인코딩으로 변환
    		byte[] bytes = str.getBytes();
    		System.out.println("str to byte[] : " + bytes);
    	}
    }

     


    byte[] convert to String🥰

    new String()

    String의 new String을 이용하고 이 때 매개변수에 bytes[]값을 넣어주면 문자열로 변환된다.

    package java_tmp.test.lsy;
    
    public class Test1 {
    
    	public static void main(String[] args){
    		
    		String str = "내사랑에 세상도 양보한 널 나 끝까지 아끼며 사랑할게 약속해줘 서로만 바라보다 먼 훗날 우리 같은날에 떠나";
    		byte[] bytes = str.getBytes();
    		System.out.println("str to byte[] : " + bytes);
    		
    		System.out.println();
    		
    		String byte2Str = new String(bytes);
    		System.out.println("byte2Str : " + byte2Str);
    	}
    }

     

     

    ※ 인코딩, 디코딩의 결과로 길이가 달라질 수 있으니 반드시 주의할 것

     

    인코딩 : 컴퓨터가 이해할 수 있는 코드로 변환 💻

    디코딩 : 사람이 이해할 수 있는 코드로 변환 👩

     

    참조 : 김철수 홍길동, 2020,12,28, https://hey79.tistory.com/40

             reakwon, 2019.5.5, https://reakwon.tistory.com/76

     

    반응형