2011년 4월 4일 월요일

[Python] ASCII Conversion

각 문자와 이를 ASCII Code로 서로 바꾸는 건 C에서는 크게 신경쓸 일이 아니었다. 하지만 Python에서 문자는 문자열과 동일하게 취급되며 그 자체의 값을 읽어서는 ASCII 코드가 나오지 않을 수도 있다. (물론 요즘 이런걸 Python으로 쓸 일은 별로 없겠지만 -_-)

필요하다면 ord() 와 이 반대의 chr() 이라는 Built-in function을 이용해서 값을 구하거나 문자로 바꿀 수 있다.
<<< ord('a')
97
<<< chr(ord('a'))
'a'
하지만 한글을 ord로 변환하려 하면 어이없게도 Syntax Error가 발생한다. (아무래도 Exception인 듯 하지만 -_-) 사실, 한글 같은 멀티바이트 문자는 ASCII범주에서 벗어나니 정상적인 동작이라 뭐라 말하기가 힘들다.

unichr() 이라는 함수도 있다. 이름에서 유추할 수 있듯이 유니코드 문자열로 바꾸는 함수다. 하지만 비슷하게 uniord 같은게 없다는 건 뭔가 안타깝기도 하다. 찾아보면 비슷한 류가 있겠지만 쓸 일이 별로 없을 것 같아서 생략...;;;; (굉장한 귀차니즘 히히)

댓글 2개 :

allieus :

유니코드에 대해서는 ord 가 동작한다는~

>>> print ord(u'한')
54620

utf8은 이렇게? ㅋㅋ

>>> print reduce(lambda x,y: x+y, [ord(ele) for ele in '한'])
542

Seorenn :

emacs 기본 환경 문제였던건가! 어쨌건 난 안되. ㅋㅋㅋㅋ

(기본인코딩이 UTF-8으로 되어 있긴 한데 가끔 새 파일 만들면 최상단에 인코딩 명시 안하는 이상 엉뚱한 인코딩이 되는 경우가 있는게 문제)