http://www.jounlai.com/web/prg/kor/
다시 한글의 얘기로 돌아와서 그럼 Unicode에서는 한글을 어떻게
처리할까
요. Unicode문자표를 보면 한글은 조합형과 유사한 방식으로
처리됨을 알
수 있습니다. 다음을 보시죠.
글자 코드값(헥사) 계산식
가 AC00h AC00h + (0*21 + 0)*28 + 0
각 AC01h AC00h + (0*21 + 0)*28 + 1
개 AC1Ch AC00h + (0*21 + 1)*28 + 0
까 AE4Ch AC00h + (1*21 + 0)*28 + 0
럼 B7FCh AC00h + (5*21 + 4)*28 + 16
표에 나타났듯이 각각의 한글 글자의 코드값은 계산식 "AC00h
+ (a*21 + b)
*28 + c"에 의해 표현됨을 알 수 있습니다.
여기서 a는 초성의 번호, b는 중성의 번호, c는 종성의 번호를
나타내며 각
각의 순서는 다음과 같습니다.
번호: 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7
초성: ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ
중성: ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ
종성:
ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ
(종성의 첫번째는 종성이 없는 경우, 예를 들어 '가'와 같은
경우를 나타냅
니다.)
코드 값으로 계산식 "AC00h + (a*21 + b)*28 + c"의 a,b,c 값을
구하는 것
은 다음과 같은 순서로 하면 됩니다.
c := Code - $AC00;
a := c div (21 * 28);
c := c mod (21 * 28);
b := c div 28;
c := c mod 28;
|