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!