문제

나는 쓰고있다 허프만 학습 운동으로서 Python의 구현. 가변 길이 Huffman 코드를 버퍼 (또는 파일)에 작성하는 시점에 도달했습니다. Python이 구현 한 비트 스트림 클래스가없는 것 같습니다! 나는 그것을 보았다 정렬 그리고 구조 모듈이지만 추가 작업없이 필요한 일을하지 않는 것 같습니다.

약간의 고글 링이 나타났습니다 이것 Bitstream 구현은 내가 원하는 것과 비슷합니다. Python Standard Library에는 실제로 비슷한 비트 스트림 클래스가 없습니까?

도움이 되었습니까?

해결책

당신은 표준 라이브러리에 아무것도 없다는 것이 옳지 만 비트 스트링 기준 치수? 이런 종류의 응용 프로그램을 위해 거의 설계되었으며 안정적이며 잘 기록 된, 그래서 나는 그것이 당신의 요구에 맞아야한다고 생각합니다.

구조, 읽기, 슬라이스 등은 모두 약간 이루어지며 순수한 파이썬입니다. Huffman 코딩 예제가 과거에 상당히 성공적으로 수행 된 것을 보았습니다.

또 다른 좋은 옵션입니다 Bitarray, 기능은 많은 기능을 가지고 있지 않지만 C 확장만큼 훨씬 빠를 수 있습니다. 보너스로 소스 패키지의 일부로 배포 된 Huffman 코딩 예제가 있습니다.

다른 팁

옳은. 비트 스트리밍이 필요한 stdlib의 대부분의 모듈은 C로 작성되며 세부 사항은 숨겨져 있습니다.

아니요, 내가 아는 한 표준 라이브러리에는 비트 정렬 작업에 도움이되는 것이 없습니다. 파이썬은 작은 물건으로 바이올린으로 설계되지 않았습니다 ^^ ...

그러나 바이트 어레이의 도움으로 자신의 비트 스트림 작성기를 쉽게 쓸 수 있습니다.

>>> from array import array
>>> a = array("B")
>>> a.append(1) # 128
>>> a.append(0)
>>> a.append(0)
>>> a.append(0)
>>> a.append(1) # 8
>>> a.append(1) # 4
>>> a.append(1) # 2
>>> a.append(1) # 1
>>> print reduce(lambda m, n: (m << 1) + n, a, 0)
143

당신은 아이디어를 얻습니다 ...

나는 아마도 파티에 조금 늦었지만이 비트 스트림 라이브러리가 있습니다.

https://pypi.python.org/pypi/bitstream/2.0.3

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top