<질문>
어떻게 얻을 수 있습니까?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이 될 수 있습니다.TypeError
UTF-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)
약 두 배의 시간이 걸리기 시작합니다.len
10str
사용하는 것보다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]
'개발 > Python' 카테고리의 다른 글
[파이썬] 키를 누를때까지 기다리는 방법 (0) | 2023.08.11 |
---|---|
[파이썬] 파일 이름에서 확장자 추출하는 방법 (0) | 2023.08.11 |
[파이썬] '이진 문자열'을 '일반 문자열'로 변환하는 방법 (0) | 2023.01.22 |
[파이썬] 메서드 내에서 현재 호출 스택을 print하는 방법 (0) | 2023.01.22 |