용량이 커짐. 256가지를 표현할 수 있는 바이트를 printable한 64가지를 사용해서 표현하기 때문. Base64 인코딩을 사용하면 원본보다 33%의 크기가 증가함.
원리
컴퓨터는 2진수를 사용하는데 이를 64진수로 표현하기 위해서 2^6 즉, 6비트 2진수 열이 필요. 하지만 대개 컴퓨터는 8비트씩 엮어진 바이트를 기본 정도 단위로 사용. 따라서 6비트와 8비트의 최소 공배수 24비트를 사용. 즉, Base 64는 24비트마다 6비트씩 쪼개어 문자 4개를 만듦.
다만, 입력되는 정보가 모두 24비트씩 떨어진다는 보장이 없으므로 나누어 떨어지지 않는 부분은 = 문자로 채움.
비트와 바이트
- 1 bit 는 2 진수 한 자리를 말하며 표현가능한 가짓수는 2개. 숫자로 치면 0 ~ 1.
- 1 byte 는 8 bit를 말하며 2 진수 8 자리에 해당하고 표현가능한 가짓수는 2^8개인 256개(진법). 숫
자로 치면 0 ~ 255.
1 byte = 8 bit = 2^8의 경우로 표현
진수는 진법으로 만들어진 수
예시
어떤 아이콘을 Base64로 인코딩하면 아래와 같은 문자값을 얻을 수 있음.
문자 열의 의미
- 문자열 : 문자의 열. 한 문자당 2byte로 10글자라면 20byte임.
- Base 64에서의 문자열 : 64진법 아스키 코드로 이루어진 열.
- 문자값 : 2 byte로 표현할 수 있는 문자의 값. char은 256개의 경우의 수를 가진 2 byte이기 때문.
마치며
단순히 자바 원시 타입을 정의로만 끝나는 게 아니라 왜, 어떻게 사용되는지를 알아보았다. 뿐만 아니라 이런 원시 타입이 실제 웹페이지에서는 어떻게 사용될 수 있는지 사례를 확인하고, 담긴 원시 타입을 사용한 이유에 대해 깊게 생각해보는 시간이었다. 특히, 아스키코드나 비트와 바이트 등 숫자에 대해 더 많은 지식을 알게 된 점이 좋았다.