[RestAPI 개발기] 7. Base64

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

YunSeolAn