1038
Dari sini :
fungsi ord () akan mendapatkan nilai int dari char. Dan jika Anda ingin mengonversi kembali setelah bermain dengan angka, fungsi chr () berfungsi.
>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>
Dalam Python 2, ada juga unichr
fungsinya, mengembalikan karakter Unicode yang ordinalnya adalah unichr
argumen:
>>> unichr(97)
u'a'
>>> unichr(1234)
u'\u04d2'
Di Python 3 Anda bisa menggunakan chr
bukan unichr
.
chr(31415) -> '窷'
chr(ord(u'й'.encode('cp1251'))).decode('cp1251') == u'й'
,. Dalam Python 3 (atauunichr
Python 2), nomor input ditafsirkan sebagai Unicode codepoint integer ordinal:unichr(0x439) == '\u0439'
(256 bilangan bulat pertama memiliki pemetaan yang sama dengan latin-1unichr(0xe9) == b'\xe9'.decode('latin-1')
:, 128 pertama - ascii:unichr(0x0a) == b'\x0a'.decode('ascii')
itu adalah hal Unicode, bukan Python).Catatan yang
ord()
tidak memberi Anda nilai ASCII per se; itu memberi Anda nilai numerik karakter dalam apa pun penyandiannya. Oleh karena itu hasilnyaord('ä')
bisa menjadi 228 jika Anda menggunakan Latin-1, atau itu dapat meningkatkanTypeError
jika Anda menggunakan UTF-8. Ia bahkan dapat mengembalikan Unicode codepoint jika Anda memberikannya unicode:sumber
unicode
secara default. Python3 ( byte ):str(b'\xc3\x9c', 'ascii')
-> memunculkan UnicodeDecodeError . Python3 ( byte ):str(b'\xc3\x9c', 'utf-8')
-> mengembalikan Ü . Anda juga dapat melihat ke dalam paket enam .Anda mencari:
sumber
Jawaban yang diterima benar, tetapi ada cara yang lebih pintar / efisien untuk melakukan ini jika Anda perlu mengubah sejumlah besar karakter ASCII ke kode ASCII mereka sekaligus. Alih-alih melakukan:
atau yang sedikit lebih cepat:
Anda mengonversi ke tipe asli Python yang mengulang kode secara langsung. Di Python 3, ini sepele:
dan pada Python 2.6 / 2.7, itu hanya sedikit lebih terlibat karena tidak memiliki
bytes
objek gaya Py3 (bytes
adalah alias untukstr
, yang beralih berdasarkan karakter), tetapi mereka memilikibytearray
:Pengkodean sebagai jenis yang secara native diulang secara ordinal berarti konversi berjalan lebih cepat; dalam tes lokal pada Py2.7 dan Py3.5, iterasi a
str
untuk mendapatkan kode ASCII menggunakanmap(ord, mystr)
mulai mengambil sekitar dua kali lebih lama untuklen
10str
daripada menggunakanbytearray(mystr)
pada Py2 ataumystr.encode('ascii')
pada Py3, danstr
semakin lama, pengali dibayar untukmap(ord, mystr)
kenaikan ke ~ 6.5x-7x.Satu-satunya downside adalah bahwa konversi sekaligus, sehingga hasil pertama Anda mungkin memakan waktu sedikit lebih lama, dan yang benar-benar sangat besar
str
akan memiliki sementara besar secara proporsionalbytes
/bytearray
, tetapi kecuali ini memaksa Anda ke halaman meronta-ronta, ini tidak mungkin menjadi masalah .sumber
Untuk mendapatkan kode ASCII karakter, Anda dapat menggunakan
ord()
fungsi ini.Berikut ini contoh kode:
Keluaran:
sumber