파이썬 bitstring 패키지 소개

Python // 2024년 05월 21일 작성 // 2024년 12월 26일 업데이트

bitstring은 파이썬에서 이진 데이터를 생성하거나 분석하기 쉽게 해주는 도구다. 특히 문자열 데이터 표현을 실제 이진 데이터로 바꾸거나 혹은 그 반대의 작업을 하기에 유용하다.

설치 및 임포트

설치는 당연하게도 pip를 이용해 쉽게 설치할 수 있다.

pip install bitstring

임포트도 그냥 통채로 해도 된다.

import bitstring

물론 주요 클래스 중 필요한 것만 골라서 할 수도 있다.

from bitstring import Bits, BitArray, BitStream

Bits

Bits는 bitstring의 근간이 되는 기본 클래스다. 그리고 불변(Immutable) 클래스다.

>>> Bits(0x01)
Bits('0b0')
>>> Bits('0x01')
Bits('0x01')

데이터 표현에 사용되는 클래스로 보이며 개인적으로는 직접 사용할 일은 별로 없을 것 같다.

BitArray

BitArray는 하나 이상의 Bit로 구성된 데이터를 구성하기 위한 용도의 클래스다.

>>> ba = BitArray('0xff')
>>> ba
BitArray('0xff')
>>> ba.append('0xaa')
>>> ba
BitArray('0xffaa')
>>> ba.bin
'1111111110101010'
>>> ba.hex
'ffaa'
>>> ba.bytes
b'\xff\xaa'

여러 타입으로 변환도 지원하기 때문에 활용도는 높을 것 같다.

ConstBitStream, BitStream

ConstBitStream는 바이트 스트림에서 위치를 이동해가며 원하는 타입으로 읽기 편하게 구성되어 있다.

>>> cbs = ConstBitStream('0x01020304')
>>> cbs.pos
0
>>> cbs.read('int:8')
1
>>> cbs.pos
8
>>> cbs.bytepos
1

posbytepos의 차이점을 잘 보자. pos는 비트 단위다. 즉 비트 단위로 데이터를 읽을 수 있다는 말이다.

ConstBitStreamBitStream의 불변(Immutable) 타입 클래스다. 메서드 등은 거의 동일하지만 BitStreamappend()같은 가변(Mutable) 메서드를 사용할 수 있다.

>>> bs = BitStream('0x0102')
>>> bs.append('0x0304')
>>> bs
BitStream('0x01020304')

외부 링크