졸업연구를 하던중 Base64 방식을 이용한 다양한 인코딩과 디코딩을 접하는 기회가 있었습니다. 해당 글에는 Base64란 무엇인가 그리고 파이썬을 이용한 인코딩, 디코딩을 올려보도록 하겠습니다.
Base64
Base64코드는 64개의 문자로만 이루어진 문자 코드입니다. 우리가 일반적으로 사용하는 ASCII 코드는 128가지의 문자로 이루어져 있습니다. 따라서 매칭하여 문자열로 변환할 수 있습니다. 여기서 ASCII 코드를 사용하지 않은 이유는 문자만 이루어져 있지 않기 때문입니다. 문자열로만 전송하는 경우에는 상관이 없으나 인코딩하여 전송하는 경우에 오류가 날 수 있습니다. 안정적으로 인코딩을할 때 사용하기 위하여 해당 문자 코드가 사용됩니다.
안정적으로 변환할 수 있으나 단점 또한 있습니다. 위의 그림에서 보면 인코딩을 할 때 용량이 증가합니다. 위의 사진은 ASCII코드를 Base64로 변환하는 방법 이었습니다. 해당 단점 또한 가지고 있습니다.
알아야 할 것
base64 (base64방식으로 변환하기 위한 모듈) | |
b64encode('string') | base64방식으로 인코딩하는 메서드 (binary → base64) |
b64decode('string') | base64방식으로 디코딩하는 메서드 (binary → base64) |
소스코드 및 분석
아래의 소스 코드는 파일을 선택(이미지)하고 base64로 인코딩, 디코딩하여 result.png로 파일을 만드는 소스코드입니다. 실제로 사용할 때는 서버와 클라이언트와 소통하는 방식으로 사용할 수 있습니다.
#-*- coding: utf-8 -*
import base64
from tkinter import filedialog
#tkinter를 이용한 파일 선택
files = filedialog.askopenfilename(initialdir="/", title = "파일을 선택 해 주세요")
f = open(files,'rb').read()
#base64 인코딩
encodeFile = base64.b64encode(f)
print(encodeFile)
#base64 디코딩
decodeFile = base64.b64decode(encodeFile)
e=open("result.png",'wb')
e.write(decodeFile)
e.close()
'컴퓨터 > Python' 카테고리의 다른 글
Python (10) - pytesseract를 이용하여 이미지 안에 있는 글자를 뽑아보자 (0) | 2023.01.07 |
---|---|
Python (9) - BeautifulSoup를 이용하여 디시인사이드에 웹 크롤링을 해보자 (4) | 2023.01.03 |
Python (7) - 튜플(tuple)을 알아보자 {vs 리스트(list)} (0) | 2022.04.08 |
Python (6) - 넘파이(NumPy)로 알아보는 배열 (0) | 2021.08.12 |
Python (5) - 리스트(List) (0) | 2021.07.23 |