파일 압축 프로그램을 개발 중입니다. 우리는 현재 압축 된 .ZIP 아카이버를 생성 할 때 다른 평판 좋은 압축기 (예 : 7zip)가 완벽하게 이해/압축 해제 할 수 있도록 .ZIP 아카이버 스탠드 아트를 구현하고 있습니다.Deflate의 동적 허프만 인코딩 - RFC 1951
우리는 지금 우리는 고정 된 코드는 따라서 리터럴 길이 + 거리 값 작업의 RFC와 완벽하게 호환 작업과 코딩 LZ77과 허프만의 변형은 RFC 1951
에 따라 DEFLATE 알고리즘을 개발하고있다.
Dynamic Huffman Coding에서는 현재 다른 압축 된 데이터 (다른 안정적인 압축기를 통해 압축 됨)에서 허프만 트리를 추출 할 수 있지만 실제 데이터를 압축 해제 할 때가되면 잘못된 값이 표시됩니다.
아마도 나는 잘못된 방식으로 나무를 읽고 있습니다.
나는 정확한 값으로 이러한 나무의 값이 압축 된 데이터에 저장되는 방법을 설명하는 장소를 구체적으로 발견하지 못했습니다.
고정 된 huffman 인코딩에서와 같은 방식으로 RFC에서 설명한대로 리터럴/거리 당 상응하는 추가 비트와 동일한 리터럴 길이 값 (0 ~ 285) + 거리 (0 ~ 30)를 따르는 것으로 가정합니다. 이 고정 허프만 부호화에 저장된
방법은 Huffman 부호 메모리의 적어도 최상위 비트에 부호의 가장 중요한 비트에 저장된다는 점이다. 이렇게하면 인코딩 트리를 비트 단위로 탐색 할 수 있습니다.
허프만 코드의 추가 비트은 다른 방법으로 저장됩니다.
Dynamic Huffman Coding은 같은 방식으로 저장합니까?
내가 누락되었거나 알고 있어야하는 것이 있습니까?
시간 내 주셔서 감사합니다. > 스스로하려는 경우 [..] < 사실 그 경우입니다. > 고정되지 않은 허프만 코딩의 올바른 용어는 "동적"입니다. "적응력이 없다". < 오, 사실 내가 읽은 것으로부터 그것을 놓쳤습니다. 그냥 편집했습니다. 감사하게도 나는 수축에 의해 압축 된 모든 블록이 자체의 허프만 인코딩 트리를 가지고 있다는 것을 이해했다. 나는 입력으로부터 정보를 읽는 트리를 실제로 생성하고있다. 그런 다음, 읽으려는 의도를 이해함에 따라 그것을 다시 읽고 인코딩한다. 나는 puff.c를 읽고있다. 나에게 그것을 가르쳐 주셔서 고마워. 감사합니다. – Fonserbc