은 DEFLATE 인코딩이 어떻게 작동하는지 이해하는 데 도움이 필요합니다. 나는 그것이 LZSS 알고리즘과 허프만 코딩의 조합임을 압니다.DEFLATE 정적 허프 먼 코드로 인코딩
그래서 예를 들어 "Deflate late"로 인코딩하십시오. Params : [Search buffer : 8kb, Look-ahead buffer 4kb] LZSS 알고리즘의 출력은 "Deflate < 5, 4>"입니다. 다음 단계에서는 정적 허프만 코딩을 사용하여 중복성을 줄입니다. 여기 내 문제가있다, 나는이 쌍을 어떻게 인코딩해야하는지 모른다. < 5, 4> huffman.
[편집]
D 000
이에 따라
11 잘 001
L 010
011
t 100
_ 101
E, F table "Deflate"라는 문자열은 000 11 001 010 011 100 11 101로 쓰여진다. 다음 단계는 encode t 그는 쌍 (5, 4). "데이터 압축 - 전체 참조"책에 따라 길이 4의 고정 된 접두사 코드는 258이며, 그 뒤에 거리 5의 고정 된 접두사 코드 (코드 4 + 1 추가 비트)가옵니다. 요약하면
:
길이 4 -> 258 -> 0,000,010
거리 5 -> 4 + 1 추가 비트 -> 00100 | 0
는 따라서 부호화 된 문자열로 기록된다 [헤더 : 1 01] 000 11 001 010 011 100 11 101 0000010 001000 [end-of-block : 0000000],하지만 내가 허프만 트리를 만들면 정적 huffman이 아니지, 그렇지?
, 당신은 이미 그 리터럴에 대한 허프만 코드를 방출하는 방법을 알고 있어야합니다. 리터럴 대신 4의 길이와 5의 거리 코드를내는 것과 똑같은 일을합니다. –
이 테이블에 따르면 "Deflate"라는 문자열은 000 11 001 010 011 100 11 101 다음 단계로 쌍 (5, 4)을 인코딩 할 수 있습니다. 책 "데이터 압축 - 전체 참조"에 따라 길이 4의 고정 된 접두사 코드는 258이며, 그 뒤에 거리 5의 고정 된 접두사 코드가옵니다.0 따라서, 상기 인코딩 된 문자열 [헤더로서 기록된다 |> 00100> 258 - -> 0,000,010 [7 비트] 거리 - 5 -> 4 + 1 추가 비트 길이 4 : 1 는 [같이 요약] 01] 000 11 001 010 011 100 11 101 0000010 001000 [end-of-block : 0000000],하지만 허프만 트리를 만들면 정적 huffman이 아니지, 그렇지? – FewG