개발/Python

[파이썬] 문자의 ASCII 값을 얻는 방법

MinorMan 2023. 8. 11. 19:27
반응형

<질문>

어떻게 얻을 수 있습니까?ASCII캐릭터로서의 가치int파이썬에서?


<답변1>

에서here:

함수 ord()는 char의 int 값을 가져옵니다. 그리고 숫자를 가지고 놀다가 다시 변환하려는 경우 chr() 함수가 트릭을 수행합니다.

>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>

Python 2에는unichr함수, 반환Unicode서수가unichr논쟁:

>>> unichr(97)
u'a'
>>> unichr(1234)
u'\u04d2'

Python 3에서는 다음을 사용할 수 있습니다.chr대신에unichr.

ord() - Python 3.6.5rc1 documentation

ord() - Python 2.7.14 documentation


<답변2>

참고ord()ASCII 값 자체를 제공하지 않습니다. 어떤 인코딩이든 문자의 숫자 값을 제공합니다. 따라서 결과는ord('ä')Latin-1을 사용하는 경우 228이 될 수 있습니다.TypeErrorUTF-8을 사용하는 경우. 유니코드를 전달하면 대신 유니코드 코드 포인트를 반환할 수도 있습니다.

>>> ord(u'あ')
12354

<답변3>

당신이 찾고있는:

ord()

<답변4>

허용되는 답변은 정확하지만 ASCII 문자 전체를 한 번에 ASCII 코드로 변환해야 하는 경우 이를 수행하는 더 영리하고 효율적인 방법이 있습니다. 다음을 수행하는 대신:

for ch in mystr:
    code = ord(ch)

또는 약간 더 빠름:

for code in map(ord, mystr):

코드를 직접 반복하는 Python 기본 유형으로 변환합니다. Python 3에서는 간단합니다.

for code in mystr.encode('ascii'):

Python 2.6/2.7에서는 Py3 스타일이 없기 때문에 약간 더 복잡합니다.bytes물체 (bytes에 대한 별칭입니다str, 문자별로 반복), 그러나 그들은bytearray:

# If mystr is definitely str, not unicode
for code in bytearray(mystr):

# If mystr could be either str or unicode
for code in bytearray(mystr, 'ascii'):

기본적으로 서수로 반복되는 유형으로 인코딩하면 변환이 훨씬 빨라집니다. Py2.7 및 Py3.5 모두에 대한 로컬 테스트에서str다음을 사용하여 ASCII 코드를 얻으려면map(ord, mystr)약 두 배의 시간이 걸리기 시작합니다.len10str사용하는 것보다bytearray(mystr)Py2 또는mystr.encode('ascii')Py3에서, 그리고str더 길어지면 승수가 지불됩니다.map(ord, mystr)~6.5x-7x까지 상승합니다.

유일한 단점은 전환이 모두 한 번에 이루어지기 때문에 첫 번째 결과가 조금 더 오래 걸릴 수 있으며 정말 엄청난str비례적으로 큰 일시적bytes/bytearray, 그러나 이로 인해 페이지 스래싱이 발생하지 않는 한 문제가 되지 않습니다.


<답변5>

문자의 ASCII 코드를 얻으려면 다음을 사용할 수 있습니다.ord()기능.

다음은 예제 코드입니다.

value = input("Your value here: ")
list=[ord(ch) for ch in value]
print(list)

산출:

Your value here: qwerty
[113, 119, 101, 114, 116, 121]
반응형