H3Z2
2. H3Z2 엔코드 형식 ¶H3Z2를 고안하게 된 배경은 인공언어를 위한 여러가지 엔코딩 형식을 만들다가 우연히 발견하게 된 것으로 다음 등식에서 기인하게 되었습니다.
36 * 36 * 50 + 16 * 46 = 65536
보시다시피 65536은 2Byte 정수값입니다. 그리고 좌항의 36 , 50 , 16 , 46 은 조합할 문자의 수를 의미합니다. 모두 50 이하로 알파벳 대소문자를 합한 것 보다 작은 수입니다. 이것이 무엇을 의미 할까요?
즉 알파벳 3개 또는 2개로 2byte를 표현할 수 있다는 것이 됩니다. 또한 'H3Z2' 라는 명칭은 " 'H' 시작될 경우 3문자 'Z' 으로 시작될 경우 2문자 "라는 뜻을 의미합니다. 정규표현식을 사용하면 다음과 같습니다.
정규식의 맨끝 /i 는 대소문자에 모두 매치한다는 옵션입니다. 중요한 점은 3문자 코드의 시작인 H - Y 와 2문자 코드의 Z A - G 가 서로 겹치는 부분이 없다는 것입니다. 첫 알파벳으로 2문자코드가 될지 3문자 코드가 될지 구분할 수 있게 됩니다. 그리고 알파벳은 다음과 같이 배열된 순서대로 값이 증가하게 됩니다.
[ H - Y ] => HhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYy [ Z A - G ] => ZzAaBbCcDdEeFfGg [ A - Y ] , [ A - W ] => AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz 알파벳을 위와 같이 분배한 것은 다분히 임의적인 것으로 다른 의미는 없습니다. 대소문자가 반복된다는 것이 좀 색다릅니다.
위에 같은 형식에 따라 정수값을 변환하면 다음과 같은 결과가 됩니다.
정수 0값은 ZA에 배정되고 65535값은 yyy에 배정됩니다.
736 값을 기준으로 그 미만이면 두자리 , 이상 이면 3자리 문자가 됩니다.
3. H3Z2 의 특징 ¶텍스트 엔코딩에는 여러가지 종류가 있습니다. baae64와 같은 엔코딩 형식은 알파벳 숫자 그리고 '+' 기호를 사용하며 웹에서 전송을 위해 사용됩니다. 16진수 표기는 알파벳과 숫자를 사용하며 범용적으로 사용됩니다. 차이는 다음 표로 비교할수 있습니다.
H3Z2은 알파벳만으로 엔코딩하며 길이면에서도 가장 효율적입니다.( 2byte 내에서 ) 단 2byte단위로 분리하기 때문에 마지막 Null문자 byte의 처리가 필요합니다. 기본적으로 문자열의 마지막 Null문자는 삭제합니다. 이러한 특징을 가지는 H3Z2은 범용적으로 사용될 수 있습니다.
예를 들어 소스코드에서 알파벳과 숫자조합으로 구성되는 변수명에 HTML형식의 태그 문자열을 엔코딩하여 넣을 수도 있습니다. 이와같은 프로젝트는 현재 진행중에 있습니다.
H3Z2 의 저작권은 GPL입니다. 필요에 따라 다양한 용도로 기능을 확장하여 활용하는 것이 가능합니다.
4. H3Z2 구현 프로그램 ¶다음 H3Z2를 PHP로 구현한 클래스입니다.
다음은 샘플 프로그램입니다.
|
Put not your trust in money, but put your money in trust. |












