2012-01-24 4 views
2

현재 데이터 인코딩/디코딩을위한 DEFLATE 방법에 대해 읽었습니다. 본 과정은 두 부분으로 구성되어 있습니다.DEFLATE 디코딩

i. 중복 된 정보 (지정된 창 내에서)를 이전 동일 피스에 대한 참조로 대체하십시오.

ii. 허프만 코딩을 사용하면 가장 많이 발생하는 기호의 크기를 줄일 수 있습니다.

나는 (i)와 관련하여 질문이 있습니다. DEFLATE는 크기 창을 기준으로 정보를 검색하고 중복 된 정보가 있으면 "포인터"로 바꾸는 LZ77을 사용합니다. 그건 완벽하게 이해가됩니다.

그러나 LZ77을 사용하여 디코딩 할 때 DEFLATE는 포인터를 어떻게 인식합니까? (포인터의 길이는 거리 쌍이다, 그것은 포인터 또는 초기 데이터에 존재 단지 숫자의 경우 식별 할 수있는 방법?)

참조 : http://en.wikipedia.org/wiki/DEFLATE#Duplicate_string_elimination

+2

여기에 흥미로운 정보가 있습니다. http://zlib.net/feldspar.html – Joe

답변

4

이 많이있는 Deflate RFC 1951 specification, 읽기 권장 더 정확하고 그러한 질문에 대답하십시오.

=> 3.2.5에 표시되는 내용. 압축 블록 (길이 및 거리 코드)

단순히 다음 기호를 검색하여 리터럴 경우, 즉시 알고 있다는 것을 의미

"문자 그대로의 길이 알파벳이 하나의 알파벳으로 병합됩니다"(0 ..255) 또는 일치 길이 (257.285) 또는 블록 끝 (256)까지 포함 할 수 있습니다. 일치 길이가있는 경우 참조 (오프셋)도 디코딩해야합니다. 오프셋은 별도의 트리를 사용하여 인코딩됩니다.

+0

고마워요! 당신은 완벽하게 대답했지만 사양에 대해서는 몰랐습니다. – sdasdadas