>백엔드 개발 >파이썬 튜토리얼 >Python에서 바이너리와 ASCII를 효율적으로 변환하는 방법은 무엇입니까?

Python에서 바이너리와 ASCII를 효율적으로 변환하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-05 15:10:11919검색

How to Efficiently Convert Between Binary and ASCII in Python?

바이너리와 ASCII 간 변환

제공된 코드는 축소 람다 함수를 사용하여 문자열을 바이너리로 변환합니다. 그러나 바이너리를 다시 ASCII로 변환하는 방법은 즉시 명확하지 않습니다.

Python 2(ASCII 문자의 경우)

[ -~] 범위의 ASCII 문자의 경우 , Python 2는 다음과 같은 쉬운 솔루션을 제공합니다.

import binascii
bin(int(binascii.hexlify('hello'), 16))
# Output: '0b110100001100101011011000110110001101111'

프로세스:

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

Python 3(모든 유니코드 문자)

Python 3에서는 모든 유니코드 문자에 대한 지원을 도입했습니다. 다음 함수는 통합 변환 인터페이스를 제공합니다.

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()

유니코드 인식 변환

마지막으로 Python 2 및 3 호환성을 위해 다음은 단일 소스 코드 조각입니다. 유니코드 변환을 처리하는 코드:

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)))

위 내용은 Python에서 바이너리와 ASCII를 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.