어떠한 정보/데이터의 형태나 형식을 다른 형태나 형식으로 변환하는 것을 말하며, 왜 굳이 잘 있는 데이터를 다른 형식으로 변환할까?라는 물음에는 데이터의 표준화,처리 속도 향상, 저장 공간 절약, 보안 등이 있다.
이진수 데이터를 Text로 바꾸는 인코딩의 하나로써 이진수 데이터 ASCII(아스키 코드) 영역의 문자로만 이루어진 문자열로 바꾸는 인코딩 방식이다.
문자열 > ASCII(아스키코드) > binary 전환 > 6비트씩 묶어서 8비트 문자로 변환 > Base64 색인표에서 찾아서 치환
Base64 인코딩에 중요한 특징은 변환했을 때 깔끔하게 떨어지지 않는 6비트의 2진수를 padding을 하여 빈자리를 채워주고 패딩문자 =을 넣어준다는 것이다.
위 동작을 눈으로 확인하기 위해서는 두가지 색인표를 알아야한다.
1. ASCII(아스키코드) 색인표

2. Base64 색인표

문자열
Hello, world! 를 기준, 이를 공백과 특수문자를 포함하면 총 13글자인것을 확인할 수 있다.
H,e,l,l,o,,,,w,o,r,l,d,!
ASCII(아스키코드)
각 알파벳을 아스키코드에 맞는 숫자로 치환한다.
H(72),e(101),l(108),l(108),o(111),,(44),(32),w(119),o(111),r(114),l(108),d(100),!(65)
2진수(binary)로 전환
01001000 01100101 01101100 01101100 01101111 00101100 00100000 01110111
01101111 01110010 01101100 01100100 00100001
6비트씩 묶어서 변환
010010 000110 010101 101100 011011 000110 111100 101100 001000 000111 011101 101111 011100 100110 110001 100100 001000 01
0000(padding부분)
Base64색인표에서 찾아서 치환
010010(S) 000110(G) 010101(V) 101100(s) 011011(b) 000110(G) 111100(8) 101100(s) 001000(I) 000111(H) 011101(d) 101111(v) 011100(c) 100110(m) 110001(x) 100100(k) 001000(I) 010000"padding부분"(Q==)
결과적으로 Base64인코딩된 데이터는 SGVsbG8sIHdvcmxkIQ== 이 된다.