Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menukar Antara Binari dan ASCII (Termasuk Unicode) dengan Cekap dalam Python?
Dalam Python, menukar rentetan kepada perwakilan binarinya adalah mudah. Menggunakan gabungan reduce(), lambda, ord(), dan bin(), persamaan binari rentetan boleh diperolehi. Walau bagaimanapun, pendekatan ini memerlukan penyambungan rentetan manual dan pemetaan kepada nilai ASCII yang sepadan.
Untuk Python 2, kaedah yang lebih ringkas tersedia menggunakan modul binasci:
import binascii bin(int(binascii.hexlify('hello'), 16))
Kaedah ini menukar aksara ASCII dalam julat [-~, serupa dengan kod asal. Untuk penukaran kembali kepada rentetan:
binascii.unhexlify('%x' % n)
Dalam Python 3.2 dan ke atas, jenis bait menawarkan kemudahan tambahan:
bin(int.from_bytes('hello'.encode(), 'big'))
Untuk penukaran kembali kepada rentetan:
n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()
Untuk menyokong semua aksara Unicode dalam Python 3, fungsi berikut boleh digunakan:
def text_to_bits(text, encoding='utf-8', errors='surrogatepass'): bits = bin(int.from_bytes(text.encode(encoding, errors), 'big'))[2:] return bits.zfill(8 * ((len(bits) + 7) // 8)) def text_from_bits(bits, encoding='utf-8', errors='surrogatepass'): n = int(bits, 2) return n.to_bytes((n.bit_length() + 7) // 8, 'big').decode(encoding, errors) or '<pre class="brush:php;toolbar:false">import binascii def text_to_bits(text, encoding='utf-8', errors='surrogatepass'): bits = bin(int(binascii.hexlify(text.encode(encoding, errors)), 16))[2:] return bits.zfill(8 * ((len(bits) + 7) // 8)) def text_from_bits(bits, encoding='utf-8', errors='surrogatepass'): n = int(bits, 2) return int2bytes(n).decode(encoding, errors) def int2bytes(i): hex_string = '%x' % i n = len(hex_string) return binascii.unhexlify(hex_string.zfill(n + (n & 1)))'
Untuk keserasian Python 2/3:
Dengan ini fungsi, menukar antara rentetan binari dan Unicode menjadi mudah dalam kedua-dua Python 2 dan Python 3.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Antara Binari dan ASCII (Termasuk Unicode) dengan Cekap dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!