[목차] == 개요 == [[바이너리]] 데이터를 문자 코드에 영향을 받지 않는 공통 [[아스키 코드|ASCII]] 문자로 표현하기 위해 만들어진 [[인코딩]]이다. [[네이버 지식iN]] 등의 [[URL]]에서 자주 볼 수 있는 형태의 바로 그것. ASCII 문자 하나가 64진법의 숫자 하나를 의미하기 때문에 BASE'''64'''라는 이름을 가졌다. 8비트짜리 [[바이트]] 3개를 6비트씩 4개로 쪼개어 Base64 코드 4개로 바꾸어 표현한다. Base64 코드를 바이너리로 디코딩하기 편하게 하기 위해 Base64 코드를 무조건 4글자 단위로 만들고, 빈 부분을 '=' 문자로 채워두기도 한다[* 종류에 따라 채우지 않기도 한다. 어차피 채우지 않아도 디코딩할 때 꼬일 염려는 없다.] 3개의 바이트를 변환한다는 점에서 [[UTF-8]] 인코딩으로 작성된 한글/한자를 변환할 때 효율이 좋다. == 예시 == 'E1L'을 Base64로 인코딩하는 과정은 아래와 같다. || '''원문''' ||<-8> '''E''' ||<-8> '''1''' ||<-8> '''L''' || || '''바이트 값''' ||<-8> 0x45 ||<-8> 0x31 ||<-8> 0x4C || || '''2진수''' ||0||1||0||0||0||1||0||1||0||0||1||1||0||0||0||1||0||1||0||0||1||1||0||0|| || '''변환 값''' ||<-6> 17 ||<-6> 19 ||<-6> 5 ||<-6> 12 || || '''결과''' ||<-6> '''R''' ||<-6> '''T''' ||<-6> '''F''' ||<-6> '''M''' || 결과는 '[[RTFM]]'. 디코딩은 이 표에 나온 과정을 거꾸로 하면 된다. 리눅스에서는 base64 명령을 다음과 같이 사용할 수 있다. $ echo -n E1L | base64 RTFM $ echo RTFM | base64 --decode E1L == Base64 변환 표 == ||값||문자||<|17>||값||문자||<|17>||값||문자||<|17>||값||문자|| ||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||+[* 62번과 63번은 종류에 따라 다르다. 표준은 이거]|| ||15||P||31||f||47||v||63||/|| [[분류:문자 전산 처리]][[분류:프로그래밍]][[분류:진법]]