utf8로 된 코드를 UCS-2로 변환하는 과정
입력 어절이 '가'(utf-8)일 경우
코드값은 0xEA 0xB0 0x80 이다.
첫번째 바이트의 첫번째 비트가 0xE0 이기 때문에 3byte로 표현된 캐릭터임을 알수 있다.
첫번째 바이트 처리
0xEA & 0xE0 == 0xE0
11101010 << 4
10100000
--------
10100000 => 0xA
두번째 바이트 처리
10110000
00111100 &
--------
00110000 >> 2
---------
00001100 => 0xC
세번째 바이트 처리
100000000
000111111 &
---------
000000000 => 0x0
UCS-2의 첫번째 바이트
0xA => 10100000
0xC => 00001100
---------------
0xAC
UCS-2의 두번째 바이트
0x0 => 00000000
---------------
0x00
0xAC00
#####################################
1바이트로 표시된 경우(0x0000 ~ 0x007F)
1. MSB가 0이면 아스키코드로 보고 그냥 1바이트를 잃으면된다.
#####################################
2. 2바이트로 표시된 경우( 0x0081 ~ 0x07ff까지)
첫비트가 0XC0인지 검사
첫번째 바이트에 0x1C & 마스킹 후 >> 2
두번째 바이트에 0x03& 마스킹후 << 6
두번째 바이트에 0x3F & 마스킹후 첫번째 바이트와 | 마스킹
#####################################
3. 3바이트로 표시된 경우( 0x00FF ~ 0xFFFF까지)
첫번째 바이트 << 4
두번째 바이트에 0x3C & 마스킹후 >> 2
두번째 바이트에 0x03 & 마스킹후 >> 6
세번째 바이트에 0x3F & 마스킹후 두번째 바이트에 | 마스킹