아스키 코드

import sys


def main():
    input = sys.stdin.readline

    c = input().rstrip()
    print(ord(c))


main()

문자 인코딩

컴퓨터는 문자를 코드(code)라 부르는 특정 정수에 대응시켜 다룹니다(우리가 작성하는 코드와는 다른 의미입니다). 문자를 그에 대응하는 정수로 변환하는 것을 문자 인코딩(encoding)이라 하고, 반대로 정수를 그에 대응하는 문자로 변환하는 것을 문자 디코딩(decoding)이라고 합니다.

문자 인코딩 방법은 다양하지만, 다음 두 가지만 알아두면 충분합니다.

  • ASCII(American Standard Code for Information Interchange; 미국 정보 교환 표준 부호, 아스키): 1960년대에 미국에서 제정한 표준 문자 인코딩입니다. 7비트로 표현할 수 있는 128개의 문자를 정의합니다.
  • Unicode(유니코드): 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준입니다. 주로 UTF-8이라 부르는 가변 길이 인코딩 방식을 적용하며, 상당히 많은 문자를 표현할 수 있습니다.

유니코드는 확장성 뿐만 아니라 호환성을 갖추기 위해 ASCII의 포함집합으로 설계되었습니다. 즉, 모든 ASCII 문자는 유니코드에서도 동일한 정수로 표현됩니다.

ord 함수

ord 함수는 주어진 문자의 유니코드 코드 포인트를 나타내는 정수를 돌려줍니다. 인자로 문자 하나만을 받을 수 있습니다.

print(ord('A'))  # 65
print(ord('Z'))  # 90
print(ord('a'))  # 97
print(ord('z'))  # 122
print(ord('0'))  # 48
print(ord('9'))  # 57
print(ord('가'))  # 44032
print(ord('힣'))  # 55203

아스키 코드의 특징

아스키 코드의 몇 가지 특징을 알아두면 유용하게 사용할 수 있습니다.

  • 아스키 코드에서 숫자와 알파벳은 다음과 같이 연속적으로 배치되어 있습니다. 그러므로 문자에서 시작하는 숫자 또는 알파벳의 아스키 코드를 빼면, 그 문자가 몇 번째 문자인지 알 수 있습니다.
  • 숫자 $d$의 아스키 코드는 $30_{16} + d$입니다.
  • 대문자의 아스키 코드에 $32(=20_{16})$를 더하면 소문자의 아스키 코드가 됩니다.
숫자 대문자 소문자
문자 0 ... 9 A ... Z a ... z
코드 (10진법) $48$ ... $57$ $65$ ... $90$ $97$ ... $122$
코드 (16진법) $30$ ... $39$ $41$ ... $5\text{A}$ $61$ ... $7\text{A}$
댓글