알아야 할 개념 - 인코딩,디코딩
인코딩(Encoding)
어떤 정보를 특정한 규칙에 따라 변환하는 과정을 말합니다. 예를 들어, 텍스트 정보를 컴퓨터가 이해할 수 있는 이진 코드로 변환하는 것이 '인코딩' 과정이라고 할 수 있습니다. 인코딩은 데이터를 효율적으로 저장하거나 전송하기 위한 목적으로 사용되곤 합니다.
디코딩(Decoding)
인코딩된 정보를 다시 원래의 형태로 변환하는 과정을 말합니다. 위의 예시를 계속해서 이야기하면, 이진 코드로 인코딩된 텍스트를 다시 원래의 텍스트 형태로 변환하는 것이 '디코딩' 과정이라고 할 수 있습니다.
이 두 과정은 데이터를 안전하게 저장하고, 효율적으로 전달하는 데 필수적입니다.
인터넷에서 데이터를 전송하거나 파일을 저장할 때 이런 인코딩과 디코딩 과정이 진행됩니다.
읽어보면 좋을 이해를 위한 정리 포스팅 :
Base64
Base64는 이진 데이터를 텍스트 형식으로 인코딩하는 방식 중 하나입니다.
이진 데이터는 0과 1로 이루어진 데이터로, 예를 들면 이미지, 음악 파일, 실행 파일 등이 해당됩니다.
Base64를 사용하여 이진 데이터를 텍스트로 변환하는 이유는 텍스트 형식으로 전송하거나 저장하기 용이하기 때문입니다.
Base64는 64개의 문자로 이루어진 알파벳을 사용하여 이진 데이터를 표현합니다.
이 알파벳에는 대문자 A-Z, 소문자 a-z, 숫자 0-9, 그리고 '+'와 '/' 기호가 포함되어 있습니다.
이 방식은 특히 이진 데이터를 텍스트로 변환할 때 사용되며, 전자 메일 첨부 파일, 데이터 URL, XML 등에서 많이 사용됩니다.
Base64 인코딩은 세 개의 8비트 바이트를 네 개의 6비트 바이트로 변환하고, 이를 Base64 문자로 매핑하여 수행됩니다. 따라서 인코딩된 문자열의 길이는 원본 이진 데이터의 약 4/3 정도가 됩니다.
Base64 디코딩은 이와 반대로 동작하며, Base64로 인코딩된 데이터를 원래의 이진 형식으로 복원합니다.
Base64는 64진법을 사용하며, 64가 2의 제곱수(64 = 2^6)이므로 이를 이용하여 바이너리 데이터를 효과적으로 텍스트로 표현할 수 있습니다. 이 방법은 주로 텍스트 기반의 시스템에서 이진 데이터를 처리하거나, 통신 중에 바이너리 데이터의 안전한 전송을 위해 사용됩니다.
import java.util.Base64;
public class Base64Example {
public static void main(String[] args) {
String original = "Hello, world!";
byte[] bytes = original.getBytes();
Base64.Encoder encoder = Base64.getEncoder();
String encoded = encoder.encodeToString(bytes);
System.out.println(encoded);
//출력결과 : SGVsbG8gV29ybGQh
}
}
import java.util.Base64;
public class Base64Example {
public static void main(String[] args) {
String encoded = "SGVsbG8gV29ybGQh";
byte[] bytes = Base64.getDecoder().decode(encoded);
String decoded = new String(bytes);
System.out.println(decoded);
//출력결과 : Hello, world!
}
}
'STUDY > JAVA' 카테고리의 다른 글
[JAVA] 람다식(Lambda) (0) | 2023.11.30 |
---|---|
[JAVA] 파일입출력 - File, FileInputStream, FileOutputStream (0) | 2023.11.23 |
[JAVA] java.nio.file.Files 사용하여 파일 내용 읽기 (1) | 2023.11.20 |
[JAVA] 이스케이프 문자(escape sequence) 종류 (0) | 2023.11.20 |
[JAVA] JSONObject - key, value 출력하기 (0) | 2023.11.07 |