BASE64 (BASE62, BASE32, BASE16)

Hyobyung Han·2022년 3월 23일
0

Algorithms

목록 보기
1/1

introduction

base64 (BASE32, BASE16)란 주어진 data에 대해 ASCII로 이루어진 결과로 encoding / decoding 방식을 의미한다.

BASE64

BASE64 encoding은, 주어진 data를 6bits (2의 6승) 으로 쪼개어 각각을 ASCII character로 변환한다.
여기서 64란, 0~9까지의 숫자(10), 알파벳 대문자(26), 소문자(26), 임의의 문자 2개(+, /) 로 encoding한다는 의미이다. (10 + 26 + 26 + 2)

다음과 같은 문자로 encoding될 수 있다. (encoding 문자는 여러 version에 따라 다르다..)

Encoding 방식encoding에 사용되는 문자encoding 단위
BASE160-9, A-F8bits (1Bytes)
BASE320-9, A-V40 bits (5Bytes)
BASE620-9, A-Z, a-z24 bits (3Bytes)
BASE640-9, A-Z, a-z, +, /24 bits (3Bytes)

encoding 단위란 주어진 data에 대해 해당 단위로 encoding 된다는 것이다.
예를 들어 BASE32는 5bit 단위로 encoding 해야하기 때문에 주어진 data의 단위가 Byte 단위라면, 5bits와 8bits 최대공약수인 40bits로 encoding해야하는 것이다.
주어진 data가 2byte일 때, BASE32 encoding 한다면 유효한 16bits에 padding이 붙어서 encoding된다.

예를 들어, BASE64는 다음과 같은 방식으로 encoding된다.

BASE32는 다음과 같다.

Practice

BOJ의 예제들로 연습해볼 수 있다.

BASE64

https://www.acmicpc.net/problem/10935
https://www.acmicpc.net/problem/10936

BASE32

https://www.acmicpc.net/problem/10938
https://www.acmicpc.net/problem/10939

BASE16

https://www.acmicpc.net/problem/10940
https://www.acmicpc.net/problem/10941

reference

https://en.wikipedia.org/wiki/Base32
https://ko.wikipedia.org/wiki/%EB%B2%A0%EC%9D%B4%EC%8A%A464
https://www.codeproject.com/Articles/1076295/Base-Encode
http://www.herongyang.com/Encoding/Base32-Encoding-Algorithm.html

0개의 댓글