CS & SW & IT 용어

[문자를 이용한 수 표현] feat. 컴퓨터 구조와 프로그래밍

Haksae 2022. 1. 22. 02:06

💪🏻문자를 사용한 수 표현

  • 비트로 각종 문자를 인코딩할 수 있다는 것은, 반대로 말하면 문자를 사용하여 컴퓨터가 알아들을 수 있는 숫자를 표현할 수 있다는 것을 의미한다. 즉, 문자를 컴퓨터 언어로 인코딩하는 것이다.
  • 그러나 이는 생각보다 단순한 문제는 아니었다. 2진데이터와 아스키 코드를 사용하면 될 것 같아 보이지만, 다음의 두 가지 제약이 있었다
1) 아스키 코드는 상당수가 제어 문자로 예약되어있고
2) 몇 시스템은 7비트만 송수신 할 수 있었기 때문이다. (아스키 코드는 8비트이다)

👉🏻 그리하여 등장한 것이 QP 인코딩과 Base64이다.

1) QP 인코딩 (Quoted-Printable encoding)

전자우편 첨부를 처리하기위해 만들어진 인코딩 방식 8비트 데이터를 7비트 데이터만 지원하는 통신 경로를 통해 송수신하기 위한 인코딩 방법

  • 즉, 8비트인 아스키 코드를 7비트로 인코딩하는 것 (이를 위해 몇 가지 규칙을 사용)
  • “출력 가능한” : 아스키 코드에서 제어 문자가 아닌 문자를 의미

[16진수를 문자 “0”부터 “F”까지로 표현하므로 한 바이트를 세 바이트로 인코딩하는 방식]
(예) "가나 다" => =B0=A1=B3=AA =B4=D9

👉🏻 QP 인코딩은 1바이트를 표현하기 위해 3바이트(24비트)를 사용하기 떄문에 매우 비효율적

2) Base 64 인코딩

  • QP인코딩보다 상대적으로 효율적 (과거에는 매우 중요)
  • 3바이트(24비트)를 6비트씩 4개로 나누고, 6비트 값에 출력 가능한 문자를 할당하여 출력 가능한 문자 (제어 문자를 제외한 아스키 코드)를 표현한다.
  • 6비트에 한 문자를 출력하기 때문에 표현 가능한 문자 수는 64개(2의 6승)이다.

→ 3바이트에 총 4문자를 표현할 수 있음

(예) "가나다" (2바이트 x 3자 = 6바이트) => sKGzqrTZ (1바이트 x 8자 = 8바이트)

👉🏻 여전히 전자우편 첨부파일 전송에 많이 사용중인 인코딩

3) URL 인코딩

URL 인코딩이란 URL에서 URL로 사용할 수 없는 문자(아스키값이 아닌 문자) 혹은 URL로 사용할 수 있지만(아스키 값이지만) 의미가 왜곡될 수 있는 문자들(/, &, =)을 '%XX'의 형태로 변환하는 것

(1) 인터넷을 통해 전송할 수 있는 문자는 오로지 ASCII 문자

(2) ASCII 문자라 하더라도 예약된 의미를 가지고 있는 문자의 경우, 그 문자 자체의 의미를 전달하고 싶은 경우에는 이스케이프 처리가 필요

 

*참고 : 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (조너선 스타인하트 지음)