[[tableofcontents]] == H3Z2 == H3Z2은 텍스트엔코딩 형식입니다. 2006년 11월에 [부들]( 신동익 )에 의해 처음 고안되었으며 2008년 8월 GPL로 공개하는 엔코딩 형식입니다. ||attachment:h3z2_mascot.png|| 옆 그림은 완보동물을 그린것으로 H3Z2의 마스코트 입니다.완보동물은 물곰(water bear)라고도 불리며 미세하며 우주공간에서도 살수 있는 끈질긴 생물체라고 합니다. ____ <.)++++< budl [부들]-- [ikw3179] [[DateTime(2008-08-19T16:19:12)]] [mail:ikw3179@naver.com] || * 관련엔코딩 : Z3A2 : 바이너리에 적합한 엔코딩 형식 == H3Z2 엔코드 형식 == H3Z2를 고안하게 된 배경은 인공언어를 위한 여러가지 엔코딩 형식을 만들다가 우연히 발견하게 된 것으로 다음 등식에서 기인하게 되었습니다. ''' 36 * 36 * 50 + 16 * 46 = 65536 ''' 보시다시피 65536은 2Byte 정수값입니다. 그리고 좌항의 36 , 50 , 16 , 46 은 조합할 문자의 수를 의미합니다. 모두 50 이하로 알파벳 대소문자를 합한 것 보다 작은 수입니다. 이것이 무엇을 의미 할까요? 즉 알파벳 3개 또는 2개로 2byte를 표현할 수 있다는 것이 됩니다. 또한 'H3Z2' 라는 명칭은 " 'H' 시작될 경우 3문자 'Z' 으로 시작될 경우 2문자 "라는 뜻을 의미합니다. 정규표현식을 사용하면 다음과 같습니다. '''/ [ H - Y ] [ H - Y ] [ A - Y ] | [ Z A - G ] [ A - W ] / i''' 정규식의 맨끝 '''/i''' 는 대소문자에 모두 매치한다는 옵션입니다. 중요한 점은 3문자 코드의 시작인 '''[ H - Y ]''' 와 2문자 코드의 '''[ Z A - G ]''' 가 서로 겹치는 부분이 없다는 것입니다. 첫 알파벳으로 2문자코드가 될지 3문자 코드가 될지 구분할 수 있게 됩니다. 그리고 알파벳은 다음과 같이 배열된 순서대로 값이 증가하게 됩니다. {{{ [ H - Y ] => HhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYy [ Z A - G ] => ZzAaBbCcDdEeFfGg [ A - Y ] , [ A - W ] => AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz }}} 알파벳을 위와 같이 분배한 것은 다분히 임의적인 것으로 다른 의미는 없습니다. 대소문자가 반복된다는 것이 좀 색다릅니다. 위에 같은 형식에 따라 정수값을 변환하면 다음과 같은 결과가 됩니다. {{{#!HTML
| ZA => 0 Za => 1 ZB => 2 Zb => 3 ZC => 4 Zc => 5 ZD => 6 Zd => 7 ZE => 8 Ze => 9 ZF => 10 Zf => 11 ZG => 12 Zg => 13 ZH => 14 Zh => 15 ZI => 16 Zi => 17 ZJ => 18 Zj => 19 ZK => 20 Zk => 21 ZL => 22 Zl => 23 ZM => 24 Zm => 25 ZN => 26 Zn => 27 ZO => 28 Zo => 29 ZP => 30 Zp => 31 ZQ => 32 Zq => 33 ZR => 34 Zr => 35 ZS => 36 Zs => 37 ZT => 38 Zt => 39 ZU => 40 Zu => 41 ZV => 42 Zv => 43 ZW => 44 Zw => 45 zA => 46 za => 47 zB => 48 zb => 49 | zC => 50 zc => 51 zD => 52 zd => 53 zE => 54 ze => 55 zF => 56 zf => 57 zG => 58 zg => 59 zH => 60 zh => 61 zI => 62 zi => 63 zJ => 64 zj => 65 zK => 66 zk => 67 zL => 68 zl => 69 zM => 70 zm => 71 zN => 72 zn => 73 zO => 74 zo => 75 zP => 76 zp => 77 zQ => 78 zq => 79 zR => 80 zr => 81 zS => 82 zs => 83 zT => 84 zt => 85 zU => 86 zu => 87 zV => 88 zv => 89 zW => 90 zw => 91 AA => 92 Aa => 93 AB => 94 . . . . . . . | gF => 700 gf => 701 gG => 702 gg => 703 gH => 704 gh => 705 gI => 706 gi => 707 gJ => 708 gj => 709 gK => 710 gk => 711 gL => 712 gl => 713 gM => 714 gm => 715 gN => 716 gn => 717 gO => 718 go => 719 gP => 720 gp => 721 gQ => 722 gq => 723 gR => 724 gr => 725 gS => 726 gs => 727 gT => 728 gt => 729 gU => 730 gu => 731 gV => 732 gv => 733 gW => 734 gw => 735 HHA => 736 HHa => 737 HHB => 738 HHb => 739 HHC => 740 HHc => 741 HHD => 742 HHd => 743 HHE => 744 HHe => 745 HHF => 746 HHf => 747 HHG => 748 HHg => 749 | HHH => 750 HHh => 751 HHI => 752 HHi => 753 HHJ => 754 HHj => 755 HHK => 756 HHk => 757 HHL => 758 HHl => 759 HHM => 760 HHm => 761 HHN => 762 HHn => 763 . . . . . . . | . . . . . . . yyH => 65500 yyh => 65501 yyI => 65502 yyi => 65503 yyJ => 65504 yyj => 65505 yyK => 65506 yyk => 65507 yyL => 65508 yyl => 65509 yyM => 65510 yym => 65511 yyN => 65512 yyn => 65513 yyO => 65514 yyo => 65515 yyP => 65516 yyp => 65517 yyQ => 65518 yyq => 65519 yyR => 65520 yyr => 65521 yyS => 65522 yys => 65523 yyT => 65524 yyt => 65525 yyU => 65526 yyu => 65527 yyV => 65528 yyv => 65529 yyW => 65530 yyw => 65531 yyX => 65532 yyx => 65533 yyY => 65534 yyy => 65535 |
"; print wordwrap( $sample_text , 80, "\n", 1 ); print "
";
print wordwrap( $H3Z2_CODE , 80, "
", 1 );
print "
";
print wordwrap( $BASE64_CODE , 80, "
", 1 );
print "
"; print wordwrap( $re_sample_text , 80, "\n", 1 ); print "