묠니르묘묘
꾸준히 성장하는 개발자스토리
묠니르묘묘
전체 방문자
오늘
어제
  • 분류 전체보기 (188)
    • 프로그래밍 (48)
      • 디자인패턴 (4)
      • 예외,에러 (4)
      • Java (29)
      • Kotlin (3)
      • React.js (4)
      • JavaScript (2)
      • Apache Kafka (2)
    • Spring (49)
      • Spring (21)
      • Spring Cloud (3)
      • JPA (25)
    • 코딩테스트 (31)
      • 알고리즘 (5)
      • Java - 백준 (26)
      • Java - 프로그래머스 (0)
    • AWS (7)
    • 데이터베이스 (6)
    • 개발 etc (23)
    • 도서 (5)
    • 회고록 (4)
    • 데브코스-데이터엔지니어링 (15)

인기 글

최근 글

hELLO · Designed By 정상우.
묠니르묘묘

꾸준히 성장하는 개발자스토리

자바 getBytes()
프로그래밍/Java

자바 getBytes()

2022. 1. 28. 20:44

 

 

 

🤔 getBytes()이란?

getBytes() 메서드는 String(문자열)을 default charset으로 인코딩하여 byte 배열로 반환해준다.

 

 

이 문자열(String)을 플랫폼의 default charset을 사용하여 바이트의 시퀀스로 인코딩하고, 새로운 바이트 배열에 결과를 저장한다.
이 문자열이 default charset으로 인코딩 할 수 없는 경우 이 메서드의 동작은 지정되지 않는다.
이 java.nio.charset.CharsetEncoder 클래스는 인코딩 과정에 더 많은 제어가 필요할 때 사용한다.

Return : 위 내용에서 언급한 결과로 생긴 byte 배열

즉, 우리가 사용하는 IDE의 default charset을 사용하여 문자열을 byte로 인코딩하여 byte 배열에 넣어서 반환해준다는 말이다.

 

 

 

 

🤔 getBytes(charset) 이란?

이 문자열(String)을 주어진 charset을 사용하여 byte의 시퀀스로 인코딩하고, 새로운 byte 배열에 결과를 저장한다.

매개변수(Params) : 문자열을 인코딩하는데 사용되는 Charset
반환값(Returns) : 위 내용에서 언급한 결과로 생긴 byte 배열

즉, 매개변수로 받은 charset으로 문자열을 인코딩하여 byte배열에 담아 반환해준다.

 

 

 

 

🤔 인코딩이 있다면 디코딩은 어떻게 하나요?

바로 new String(byte[])을 사용한다!

IDE에서 new String(byte[])을 Ctrl 누르고 클릭해보면 다음과 같이 String 클래스 쪽으로 넘어간다.

String 클래스 생성자

플랫폼의 default charset을 사용하여 지정된 byte 배열을 디코딩하여 새로운 String(문자열)을 생성한다.
새로운 문자열의 길이는 charset의 기능때문에 byte 배열의 길이와 같지 않을 수 있다.
주어진 byte가 default charset에서 유효하지 않을 때 이 생성자의 동작은 지정되지 않는다.
java.nio.charset.CharsetDecoder 클래스는 디코딩 과정에서 더 많은 제어가 필요할 때 사용된다.

매개변수(Params) : bytes - 문자(character)들로 디코딩할 bytes

즉, new String(byte[])을 입력하면 byte[]을 default charset으로 디코딩한 문자열을 생성한다.

이렇게 디코딩을 진행할 수 있다.

그렇다면 내가 지정한 charset으로 인코딩도 할 수 있듯이, 디코딩도 가능하다.

 

바로 new String(byte[] , charset) 을 사용한다!!!

이것도 위와 똑같은 과정인데 변경된 점이 내가 지정한 charset으로 디코딩하는 점이다.

 

 

💻 실습해보자

이렇게 코드를 작성하여 입력해보자.

"Hello!!!" 를 입력하면 default charset으로 인코딩된 byte 배열이 만들어져서 출력된다.

마지막에 default charset으로 디코딩하여 String(문자열)로 만들어서 다시 출력한다.

 

 

 

 

 

Java8에서 지원하는 인코딩 종류(Supported Encodings)는 Oracle에서 제공하는 문서를 참고하자.

https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html

 

Supported Encodings

Supported Encodings The java.io.InputStreamReader, java.io.OutputStreamWriter, java.lang.String classes, and classes in the java.nio.charset package can convert between Unicode and a number of other character encodings. The supported encodings vary between

docs.oracle.com

 

 

 

 

느낀점

이렇게 자바에서 내가 지정한 charset으로 인코딩과 디코딩을 하는 방법을 알게되었다.

getBytes()와 new String()으로 이런 방법이 있을 줄 몰랐는데 새로 알게된 점이었다.

이러한 문자열 인코딩을 알고 있어야지 암호화와 복호화를 할 수 있을 것 같다.

저작자표시

'프로그래밍 > Java' 카테고리의 다른 글

Java 줄바꿈문자 \n 이란?  (0) 2022.02.17
JVM(자바가상머신)이란? - Part 3, ClassLoader  (0) 2022.02.01
자바 toCharArray()  (2) 2022.01.28
JVM(자바가상머신)이란? - Part 2, Execution Engine  (0) 2022.01.26
JVM(자바가상머신)이란? - Part 1, 소개  (0) 2022.01.23
    '프로그래밍/Java' 카테고리의 다른 글
    • Java 줄바꿈문자 \n 이란?
    • JVM(자바가상머신)이란? - Part 3, ClassLoader
    • 자바 toCharArray()
    • JVM(자바가상머신)이란? - Part 2, Execution Engine
    묠니르묘묘
    묠니르묘묘

    티스토리툴바