2011-08-25 4 views
0

아마 Google 내 Google 푸는 절름발이 일 수 있습니다. 그러나 15 년 전에 특정 압축 알고리즘이 할당 된 방법 더 적은 비트의 사전 키를 압축하는 대부분의 자주 반복되는 항목으로 반복합니다. 더 좁은 비트 값의 공간이 있었기 때문에, 덜 사용 된 사전 항목에 비트를 추가했습니다.그레이 코드 (또는 기타?)를 사용하여 너비를 저장하지 않고 가변 비트 폭 값을 저장하십시오.

그런 다음 원본 코드의 항목을이 사전 키로 바꿨지 만 회색 코드로 (메모리가 올바르게 작동하는 경우) 회색 코드로 인코딩 된 숫자를 비트 단위로 변환 할 때 읽어야 할 비트 수를 저장해야 할 필요없이 전체 번호를 알고 있어야합니다.

문제는 이것이 작동하는 방식이 보이지 않으며, 디지털 위치 센서를 디코딩 할 때 회색 코드 (예 : 위키 백과)가 장점을 강조한다는 것입니다. 나는 분명히 그것을 위해 필요하지 않습니다.

내가 생각하고있는 인코딩과 다른 유형입니까, 아니면 정말 분명한 것을 놓치고 있습니까?

내 응용 프로그램은 히트가 3 바이트 키로 파일 테이블에 직렬화되는 트라이 기반 색인입니다. 잎에는 수천 가지의 히트가있을 수 있지만, 가끔씩 10K에서 100K 개의 파일이 있기 때문에 낭비되는 공간이 많습니다.

나는 다른 해킹들도 생각해 봤지만, 내 기억은 이것으로 되돌아 가는데 이상적이다. 누군가가 예제에 대한 링크를 게시하거나 나를 위해 일부 키워드를 삭제할 수 있습니까? 또는 .net/java/c *의 샘플? 감사!

+5

이 구성표는 [허프만 코딩] (http://en.wikipedia.org/wiki/Huffman_coding)과 같은 사운드를 설명합니다. –

+2

그레이 코딩을 고려하고 있습니까? 나는 당신이 [접두사 코드] (http://en.wikipedia.org/wiki/Prefix_code)를 생각하고 있다고 생각합니다. [호프만 코딩] (http://en.wikipedia.org/wiki/Huffman_code). –

+0

LZW처럼 들립니다. – borrible

답변

1

Arithmetic/Range 코딩 (대부분의 사람들이 학문적으로 동일한 것)이었을 수 있습니다.

7zip은 LZ * 패스 다음에 범위 코딩을 사용합니다. 따라서 공개 도메인 인 SDK을 사용할 수 있습니다 (래퍼뿐만 아니라 전체 압축 루틴에 대한 C# 코드 포함).

+0

7zip이 C#입니까? 와 그거 멋진데! 나는 결코 체크하지 않았다. – FastAl

관련 문제