Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana dengan Cekap Menukar Perduaan kepada ASCII dan Sebaliknya dalam Python?

Bagaimana dengan Cekap Menukar Perduaan kepada ASCII dan Sebaliknya dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-11-28 10:06:13192semak imbas

How to Efficiently Convert Binary to ASCII and Vice Versa in Python?

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 &amp; 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn