Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk menukar antara binari dan ASCII dengan cekap dalam Python?

Bagaimana untuk menukar antara binari dan ASCII dengan cekap dalam Python?

Barbara Streisand
Lepaskan: 2024-12-05 15:10:11
asal
919 orang telah melayarinya

How to Efficiently Convert Between Binary and ASCII in Python?

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

Untuk membalikkan proses:

n = int('0b110100001100101011011000110110001101111', 2)
binascii.unhexlify('%x' % n)
# Output: 'hello'
Salin selepas log masuk

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

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

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!

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