파일을 문자로 변경해서 전송하는 기술이다.
문자와 파일을 서버 또는 클라이언트에게 전송을 하고 싶을 때에는, 문자와 파일을 따로 보내야 한다. 총 2번을 전송해야한다. 하지만 여러번에
I/O
가 생기게 된다면 컴퓨터는 느려지게 된다.
최근에는 모든 문자를 JSON
방식으로 보내는 것이 일반적이다. 그래서 이 문자 사이에 파일을 어떻게 끼울 수 있을까 생각하다가 만들어진 방법이 Base64
이다.Base64
는 파일을 문자로 변경하여 JSON
데이터에 같이 끼워넣어서 한 번에 전송으로 문자와 파일을 모두 보낼 수 있게 해주는 기술이다. 
파일을 Base64로 말고 아스키 코드로 바꾸어 보내면 되는 것 아닌가요?
만약 사진을 보낸다고 생각해보겠다. 그 전에 먼저 사진에 대해서 생각을 해보겠다.
사진은 무수한 픽셀(점)들이 밀접하게 모여서 만들어진 것이다. 이 픽셀들의 좌표를 알면 흑백의 여부를 알 수 있다. 하지만 우리가 보내고자 하는 사진이 다양한 색의 사진이라면
아스키 코드
로 변환 할 수 없다.
색을 표현하기 위해서는 픽셀의 좌표와, RGB좌표가 필요하다. 하지만 RGB의 좌표는 0~255까지 표현이 가능하다. 하지만
아스키 코드
는 127까지만 표현을 할 수 있기 때문에 해당 좌표 중에 127이 넘어가버리는 순간 아스키 코드
로 변환이 불가능하다. 그렇기 때문에 Base64
라는 기술을 사용하게 된다.
Base64는 이미지 파일을
8bit
로 변환을 한다. 이후 8bit
를 이어 붙여서 6bit
씩 나눈다. Base64
는 8bit
가 아닌 6bit
단위로 나누어 인코딩을 하기 때문이다. 6bit
로 나눈 뒤 base64
분석표로 문자를 찾은 뒤, 그 문자를 다시 아스키 코드
로 변환하여 마지막에 통신을 할 때에는 8bit
로 통신을 하게 된다. bytesteam은 8bit로 통신을 해야하기 때문이다. 이후 이 문자를 JSON
데이터에 끼워서 같이 전송을 하고 디코딩을 할 때에도 같은 방식으로 디코딩을 하면 이미지가 출력이 된다.Base64
는 8bit를 6bit로 나누기 때문에 경우에 따라서는 빈 공간이 생긴다. Base64
에서는 빈 공간을 =
으로 대체 한다.- 해당 그림은
Base64
데이터를8bit
로 변환해보는 과정이다.

Share article