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
Lepaskan: 2024-11-28 10:06:13
asal
110 orang telah melayarinya

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))
Salin selepas log masuk

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)
Salin selepas log masuk

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()
Salin selepas log masuk

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)))
Salin selepas log masuk
'

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan