바이너리를 ASCII로 변환하고 그 반대로 변환
디지털 데이터를 인코딩하고 디코딩하려면 바이너리와 ASCII 간의 변환이 필수적입니다. 다음은 언급한 문제를 해결하면서 Python에서 이 변환을 효과적으로 수행하는 방법입니다.
문자열을 이진수로 변환
문자열을 이진수로 변환하려면 다음을 사용할 수 있습니다.
import binascii bin(int(binascii.hexlify('hello'), 16))
이것은 문자열을 16진수 표현으로 변환한 다음 이진수로 변환하여 동일한 출력을 생성합니다.
2진수를 문자열로 변환
2진수를 문자열로 변환하려면 다음을 활용하세요.
n = int('0b110100001100101011011000110110001101111', 2) binascii.unhexlify('%x' % n)
이렇게 하면 2진수 문자열이 16진수로 변환됩니다. 값을 입력한 다음 이를 원래 문자열로 디코딩합니다.
Python 3.2 호환성
Python 3.2 이상에서는 다음 방법을 사용할 수 있습니다.
bin(int.from_bytes('hello'.encode(), 'big')) n = int('0b110100001100101011011000110110001101111', 2) n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()
이 방법은 int.from_bytes() 및 int.to_bytes() 함수를 활용합니다. 바이너리 데이터를 효율적으로 처리하는 방법을 제공합니다.
유니코드 문자 지원 (Python 3)
Python 3에서 유니코드 문자를 처리하려면 다음을 사용하세요.
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)))
이 함수는 지정된 인코딩 및 오류 처리를 사용하여 텍스트를 인코딩 및 디코딩하여 올바른 처리를 보장합니다. 유니코드 문자.
단일 소스 Python 2/3 호환 버전
이 코드는 Python 2 및 3과 모두 호환됩니다.
이 코드는 바이너리 및 ASCII 변환을 위한 일관된 함수 세트를 제공하면서 두 Python 버전을 모두 처리합니다.
위 내용은 Python에서 바이너리를 ASCII로 또는 그 반대로 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!