Tukar Binari kepada ASCII dan Sebaliknya
Penukaran antara binari dan ASCII adalah penting untuk pengekodan dan penyahkodan data digital. Berikut ialah kaedah untuk melaksanakan penukaran ini dengan berkesan dalam Python, menangani cabaran yang anda nyatakan:
Menukar Rentetan kepada Binari
Untuk menukar rentetan kepada binari, anda boleh menggunakan:
import binascii bin(int(binascii.hexlify('hello'), 16))
Ini menukar rentetan kepada perwakilan heks dan kemudian kepada binari, menghasilkan output yang sama seperti anda diperolehi.
Menukar Perduaan kepada Rentetan
Untuk penukaran daripada binari kepada rentetan, gunakan:
n = int('0b110100001100101011011000110110001101111', 2) binascii.unhexlify('%x' % n)
Ini mengubah rentetan binari kepada hex nilai dan kemudian menyahkodnya kepada rentetan asal.
Python 3.2 Keserasian
Dalam Python 3.2 dan ke atas, anda boleh menggunakan kaedah berikut:
bin(int.from_bytes('hello'.encode(), 'big')) n = int('0b110100001100101011011000110110001101111', 2) n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()
Kaedah ini menggunakan fungsi int.from_bytes() dan int.to_bytes(), menyediakan cara yang cekap untuk mengendalikan data binari.
Menyokong Aksara Unikod (Python 3)
Untuk mengendalikan aksara Unicode dalam Python 3, gunakan:
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)))
Fungsi ini mengekod dan menyahkod teks dengan pengekodan dan pengendalian ralat yang ditentukan, memastikan pengendalian yang betul daripada aksara Unicode.
Single-Source Python 2/3 Compatible Versi
Kod ini serasi dengan Python 2 dan 3:
Kod ini mengendalikan kedua-dua versi Python sambil menyediakan set fungsi yang konsisten untuk penukaran binari dan ASCII.
Atas ialah kandungan terperinci Bagaimana dengan Cekap Menukar Perduaan kepada ASCII dan Sebaliknya dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!