인코드(encode)와 디코드(decode)

Psj·2021년 3월 11일
0

Python

목록 보기
38/41
post-thumbnail

문자의 개념(영어)

대문자 A~Z : 26문자
소문자 a~z : 26문자
숫자 0~9 : 10문자
--------------------------62개 문자

기타 : !,,#,&,^,,* 등등등 : 66문자

그래서
기본문자 : 62 + 66 = 128개 문자

예비문자 : 128개 문자 추가

총 : 기본문자 128개 + 예비문자 128개 = 256개이고
0~255의 정수로 매칭시켜 총 256개가 된다.

256개2의 8승이고 2의 8승은 8비트이며 8비트는 1바이트가 된다.

이렇게 128개의 문자와 정수를 1:1 매칭한것을 ASCII CODE라고 한다.

'A' - 65 로 매칭
'a' - 97 로 매칭
'0' - 48 로 매칭

영어와 특수문자는 이렇게 1바이트로 표현이 가능하지만 한국어,영어,일본어 등등 기타언어를 다 표현하기위해서는 256개의 경우의수 == 1바이트로는 부족하게된다.

그래서 등장한게 유니코드(unicode)이다.

unicode

  • 멀티바이트를 사용하여 한 문자를 표현.(바이트를 여러개 쓰자는 말이다.)

UTF8(Universal Transformation Format)

  • 유니코드의 한 종류이다. 인터넷에서 사용하는 대부분의 문자코드는 UTF8을 사용한다.

  • 가변길이 1 ~ 4바이트를 사용한다.(1바이트에서 4바이트까지 왔다갔다하며 사용한다는 말)

인코드와 디코드가 사용되는 경우

우리가 문자열 abc를 입력해서 상대방에게 보낸다는 가정을 한다.

  1. 컴퓨터가 실제로 이해하는것은 숫자뿐이므로 우리가 입력한 abc라는 문자열은 컴퓨터 메모리상에 바이트단위로 바뀌어 각 문자에 1대1 매칭된 숫자인 97 98 99로 저장되게 된다.

(이 과정이 인코드(encode))

  1. 하지만 상대방의 컴퓨터에서 읽을때는 문자로 와야하기때문에 97 98 99는 다시 1대1 매칭된 문자인 a b c가되고 이것이 합쳐진 문자열인 abc로 변환되서 상대방컴퓨터에서 보여지게된다.

(이 과정이 디코드(decode))

profile
Software Developer

0개의 댓글