파이썬에서 문자열을 바이너리로 변환하기
파이썬에서 문자열을 바이너리(2진수)로 변환하려면 문자열의 각 문자를 하나씩 순회하면서 해당 문자의 아스키(ASCII) 코드 값을 구하고, 이를 2진수 형태로 바꾼 뒤 하나의 문자열로 연결하면 됩니다. 대표적인 방법 두 가지를 소개합니다.
방법 1: format() 함수 활용
format(ord(x), 'b')를 사용하면 문자 x를 접두사 없는 순수 2진수 문자열로 손쉽게 변환할 수 있습니다. 다음은 'hello world'라는 문자열을 공백으로 구분된 바이너리 문자열로 변환하는 예제입니다.
>>> st = "hello world" >>> ' '.join(format(ord(x), 'b') for x in st) '1101000 1100101 1101100 1101100 1101111 100000 1110111 1101111 1110010 1101100 1100100'
방법 2: bytearray와 map() 함수 활용
bytearray로 문자열을 바이트 배열로 만든 뒤, map()과 bin() 함수를 조합하면 모든 문자를 '0b' 접두사가 붙은 2진수 표현으로 한 번에 매핑할 수 있습니다.
>>> st = "hello world" >>> list(map(bin, bytearray(st))) ['0b1101000', '0b1100101', '0b1101100', '0b1101100', '0b1101111', '0b100000', '0b1110111', '0b1101111', '0b1110010', '0b1101100', '0b1100100']
참고: 파이썬 3 환경에서의 주의점
위의 bytearray(st) 방식은 파이썬 2 기준의 코드입니다. 파이썬 3에서는 문자열(str)을 그대로 bytearray에 넣을 수 없으므로, bytearray(st.encode()) 또는 st.encode('utf-8')처럼 먼저 바이트(bytes) 객체로 인코딩한 후 사용해야 합니다. 또한 파이썬 3의 map()은 이터레이터를 반환하므로 결과를 리스트로 보려면 list()로 감싸야 한다는 점도 기억해 두세요.