1. Base64
- Base64는 사진 등의 파일을 문자로 변환하기 위해 사용하는 인코딩 기법
- 문자로 변환 → JSON에 담아서 보낼 수 있음
- JSON에 문자로 변환해서 담는 이유 : JSON은 바이트 자체를 담을 수 없고, 해석할 수 없음
2. Base64 인코딩 방법
- 사진을 예로 들었을 때에, 단순히 사진의 픽셀(pixel)의 좌표에 1, 0을 넣는다고 가정한다면 흑백 사진을 구현 가능
- 색이 있는 구간을 1 (검정색), 색이 없는 구간을 0 (흰색)으로 표현
- 100 x 100 크기의 흑백 사진을 표현하기 위해서 총 10000 바이트가 필요함 (약 10KB)
- 색이 칠해지지 않은 픽셀을 제외할 경우 용량은 더욱 낮아질 수 있음
- 컬러 사진의 경우, 색을 표현하기 위한 RGB 코드가 추가됨
- 이때는 검정색, 흰색도 전부 표기해야 하므로 픽셀의 제외가 불가능함
- 한 픽셀의 x, y, R, G, B의 값을 전부 표현하기 위해 5 바이트가 필요
- 100 x 100 크기의 사진을 전부 표현하기 위해선 50000 바이트가 필요 (약 50KB)


3. Base64 → ASCII (통신 방법)
- 컬러 사진을 JSON에 담아서 보내야 할 때의 문제가 발생
- ASCII는 7비트로 글자를 표현하고, 마지막 1비트는 오류 검출용 패리티 비트
- 8비트이더라도 0 ~ 127까지의 수밖에 표현할 수 없음
- RGB 값은 하나 당 0 ~ 255 까지 표현 가능하므로, ASCII 코드로 전부 전환할 수 없음
- 이때, Base64를 활용하여 통신을 진행

- 위 그림처럼,
01101110 10001000 11011000 11110000 10010000
의 5비트 데이터가 들어왔을 때에 Base64를 활용하여 글자로 변환해야 함
1. Base64 Encoding
- 우선, 5비트 데이터를 전부 일렬로 나열시킨 후, 6글자(6비트)씩 끊어 인코딩을 준비
- 마지막의 ‘=’ 기호는 데이터를 채우기 위한 padding
011011/101000/100011/011000/111100/001001/0000==
- 6자씩 끊은 2진수를 10진수로 변환하여, 해당하는 문자로 치환
값 | 문자 | 값 | 문자 | 값 | 문자 | 값 | 문자 |
0 | A | 16 | Q | 32 | g | 48 | w |
1 | B | 17 | R | 33 | h | 49 | x |
2 | C | 18 | S | 34 | i | 50 | y |
3 | D | 19 | T | 35 | j | 51 | z |
4 | E | 20 | U | 36 | k | 52 | 0 |
5 | F | 21 | V | 37 | l | 53 | 1 |
6 | G | 22 | W | 38 | m | 54 | 2 |
7 | H | 23 | X | 39 | n | 55 | 3 |
8 | I | 24 | Y | 40 | o | 56 | 4 |
9 | J | 25 | Z | 41 | p | 57 | 5 |
10 | K | 26 | a | 42 | q | 58 | 6 |
11 | L | 27 | b | 43 | r | 59 | 7 |
12 | M | 28 | c | 44 | s | 60 | 8 |
13 | N | 29 | d | 45 | t | 61 | 9 |
14 | O | 30 | e | 46 | u | 62 | + |
15 | P | 31 | f | 47 | v | 63 | / |
27 40 35 24 60 9 0 b o j Y 8 J A
2. 해당하는 문자열을 ASCII 문자에서 찾아 치환
- ‘bojY8JA’ 라는 문자열이 Base64를 통해 생성되었으니, 이를 전송하기 위해 ASCII 코드로 치환해야 함

98 111 106 89 56 74 65
- 변환한 ASCII 코드를 2진수로 다시 치환 후 전송
01100010 01101111 01101010 01011001 00111000 01001010 01000001
3. Base64 Decoding
- 전송 받은 숫자를 ASCII 코드에서 찾아 문자열을 찾은 후, 동일한 문자열을 Base64에서 찾음
- 찾은 문자열의 코드를 디코딩하여 일렬로 이어붙임
- 붙인 문자열을 다시 8자씩 끊어서 파싱 후 해석
Share article