2012-09-09 6 views
1

Base 40 인코딩을 사용하여 Strings (Java에서 Redis 인스턴스 FWIW로 전송)를 압축 할 수 있음을 알았습니다. 빠른 테스트를 통해 일부 대체 데이터 고려하고있어. Smaz.String을 인코딩 할 때 base 40을 사용할 경우의 의미는 무엇입니까?

40보다 기본 32 또는 64 인코딩을 선호하는 이유가 있습니까? 모든 단점은 잠재적으로 무손실 인코딩과 같은 것입니까?

답변

1

40은 문자를 제공합니다 (대부분의 경우 응용 프로그램에서 대문자를 사용하지 않는 한 소문자 일 가능성이 큽니다). 그리고 36 자릿수를 입력 한 다음 구두점 및 교대로 4자를 입력하십시오. 남은 문자 중 하나를 이스케이프 (escape)로 만들어 무손실로 만들 수 있습니다. 따라서 다음 한두 문자가 다른 문자에없는 바이트를 나타냅니다. 또한 좋은 방법은 대소 문자를 전환하는 Shift-Lock 문자를 사용하는 것입니다. 대문자 문자열이있는 경향이 있습니다.

40은 3 개의 기본 40 자리가 2 바이트에 적합하기 때문에 편리한 기준입니다. 40^3 (64000)은 2^16 (65536)보다 작은 것입니다.

사용해야하는 것은 데이터 통계에 따라 다릅니다.