Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk menukar antara binari dan ASCII dengan cekap dalam Python?
Menukar Antara Binari dan ASCII
Kod yang disediakan menukar rentetan kepada binari menggunakan fungsi lambda pengurangan. Walau bagaimanapun, kaedah untuk menukar semula perduaan kepada ASCII tidak kelihatan serta-merta.
Python 2 (Untuk Aksara ASCII)
Untuk aksara ASCII dalam julat [ -~] , Python 2 menawarkan penyelesaian mudah:
import binascii bin(int(binascii.hexlify('hello'), 16)) # Output: '0b110100001100101011011000110110001101111'
Untuk membalikkan proses:
n = int('0b110100001100101011011000110110001101111', 2) binascii.unhexlify('%x' % n) # Output: 'hello'
Python 3 (Semua Aksara Unikod)
Python 3 memperkenalkan sokongan untuk semua aksara Unikod. Fungsi berikut menyediakan antara muka penukaran bersatu:
def text_to_bits(text): bits = bin(int.from_bytes(text.encode(), 'big'))[2:] return bits.zfill(8 * ((len(bits) + 7) // 8)) def text_from_bits(bits): n = int(bits, 2) return n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()
Penukaran Unicode-Aware
Akhir sekali, untuk keserasian Python 2 dan 3, berikut ialah coretan kod sumber tunggal yang mengendalikan penukaran Unicode:
def text_to_bits(text): bits = bin(int(binascii.hexlify(text.encode()), 16))[2:] return bits.zfill(8 * ((len(bits) + 7) // 8)) def text_from_bits(bits): n = int(bits, 2) return int2bytes(n).decode() def int2bytes(i): hex_string = '%x' % i n = len(hex_string) return binascii.unhexlify(hex_string.zfill(n + (n & 1)))
Atas ialah kandungan terperinci Bagaimana untuk menukar antara binari dan ASCII dengan cekap dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!