Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Menukar Antara Binari dan ASCII (Termasuk Unicode) dengan Cekap dalam Python?

Bagaimanakah Saya Boleh Menukar Antara Binari dan ASCII (Termasuk Unicode) dengan Cekap dalam Python?

Susan Sarandon
Lepaskan: 2024-11-26 05:35:11
asal
494 orang telah melayarinya

How Can I Efficiently Convert Between Binary and ASCII (Including Unicode) in Python?

Menukar Binari kepada ASCII dan Sebaliknya

Dalam Python, menukar rentetan kepada perwakilan binarinya adalah mudah. Menggunakan gabungan reduce(), lambda, ord(), dan bin(), persamaan binari rentetan boleh diperolehi. Walau bagaimanapun, pendekatan ini memerlukan penyambungan rentetan manual dan pemetaan kepada nilai ASCII yang sepadan.

Kaedah Penukaran Lebih Mudah

Untuk Python 2, kaedah yang lebih ringkas tersedia menggunakan modul binasci:

import binascii
bin(int(binascii.hexlify('hello'), 16))
Salin selepas log masuk

Kaedah ini menukar aksara ASCII dalam julat [-~, serupa dengan kod asal. Untuk penukaran kembali kepada rentetan:

binascii.unhexlify('%x' % n)
Salin selepas log masuk

Penambahbaikan Python 3.2

Dalam Python 3.2 dan ke atas, jenis bait menawarkan kemudahan tambahan:

bin(int.from_bytes('hello'.encode(), 'big'))
Salin selepas log masuk

Untuk penukaran kembali kepada rentetan:

n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()
Salin selepas log masuk

Sokongan Unikod dalam Python 3

Untuk menyokong semua aksara Unicode dalam Python 3, fungsi berikut boleh digunakan:

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

Untuk keserasian Python 2/3:

Dengan ini fungsi, menukar antara rentetan binari dan Unicode menjadi mudah dalam kedua-dua Python 2 dan Python 3.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Antara Binari dan ASCII (Termasuk Unicode) dengan Cekap 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