1038
Desde aquí :
La función ord () obtendría el valor int del char. Y en caso de que desee volver a convertir después de jugar con el número, la función chr () hace el truco.
>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>
En Python 2, también existe la unichrfunción, que devuelve el carácter Unicode cuyo ordinal es el unichrargumento:
>>> unichr(97)
u'a'
>>> unichr(1234)
u'\u04d2'
En Python 3 puedes usar en chrlugar de unichr.
chr(31415) -> '窷'chr(ord(u'й'.encode('cp1251'))).decode('cp1251') == u'й'. En Python 3 (ounichren Python 2), el número de entrada se interpreta como ordinal entero de punto de código Unicode:unichr(0x439) == '\u0439'(los primeros 256 enteros tienen el mismo mapeo que latin-1:unichr(0xe9) == b'\xe9'.decode('latin-1')el primer 128 - ascii:unichr(0x0a) == b'\x0a'.decode('ascii')es una cosa Unicode, no Pitón).Tenga en cuenta que
ord()no le da el valor ASCII per se; le da el valor numérico del carácter en cualquier codificación en la que se encuentre. Por lo tanto, el resultadoord('ä')puede ser 228 si está usando Latin-1, o puede aumentar aTypeErrorsi está usando UTF-8. Incluso puede devolver el punto de código Unicode si lo pasa como unicode:fuente
unicodepor defecto. Python3 ( bytes ):str(b'\xc3\x9c', 'ascii')-> genera UnicodeDecodeError . Python3 ( bytes ):str(b'\xc3\x9c', 'utf-8')-> devuelve Ü . También puede consultar los seis paquetes.Estás buscando:
fuente
La respuesta aceptada es correcta, pero hay una manera más inteligente / eficiente de hacer esto si necesita convertir un montón de caracteres ASCII a sus códigos ASCII a la vez. En lugar de hacer:
o el un poco más rápido:
convierte a los tipos nativos de Python que iteran los códigos directamente. En Python 3, es trivial:
y en Python 2.6 / 2.7, solo está un poco más involucrado porque no tiene un
bytesobjeto de estilo Py3 (byteses un alias parastr, que itera por carácter), pero tienenbytearray:Codificar como un tipo que itera nativamente por ordinal significa que la conversión es mucho más rápida; en pruebas locales tanto en Py2.7 como en Py3.5, la iteración de a
strpara obtener sus códigos ASCII usandomap(ord, mystr)comienza tomando aproximadamente el doble de tiempo por unlen10strque el usobytearray(mystr)en Py2 omystr.encode('ascii')Py3, y a medida questrse alarga, el multiplicador paga pormap(ord, mystr)aumentos a ~ 6.5x-7x.El único inconveniente es que la conversión es a la vez, por lo que su primer resultado podría tardar un poco más, y una verdaderamente enorme
strtendría un proporcionalmente grandes temporalesbytes/bytearray, pero a menos que las fuerzas de esta página en goleada, esto no es probable que importa .fuente
Para obtener el código ASCII de un personaje, puede usar la
ord()función.Aquí hay un código de ejemplo:
Salida:
fuente