문자 인코딩 1 - 인코딩
#include <stdio.h>
#define iconSZ sizeof "✅" // icon size == 5byte
// https://namu.wiki/w/UTF-8#toc
// https://www.compart.com/en/unicode/U+2705
// UTF-8 Encoding: 0xE2 0x9C 0x85
int main(void)
{
char icon[iconSZ] = "✅";
printf("icon %s size: %ld Byte\n", icon, sizeof icon);
char *ptr = icon;
char a[5] = "";
a[0] = *(ptr+0);
a[1] = *(ptr+1);
a[2] = *(ptr+2);
a[3] = *(ptr+3);
printf("a %s, %ld\n", a, sizeof a);
char t[10] = "✅";
printf("a[0]의 16진수 %#x\n", icon[0]);
printf("a[0]의 16진수 %x\n", a[0]);
printf("t[0]의 16진수 %x\n", t[0]);
char cpy[4] = "";
cpy[0] = *(ptr + 0);
cpy[1] = *(ptr + 1);
cpy[2] = *(ptr + 2);
cpy[3] = *(ptr + 3);
printf("cpy %s, %ld\n", cpy, sizeof cpy);
printf("cpy[0]의 16진수 %x\n", cpy[0]);
printf("cpy[1]의 16진수 %x\n", cpy[1]);
printf("cpy[2]의 16진수 %x\n", cpy[2]);
printf("cpy[3]의 16진수 %x\n", cpy[3]);
char cpy2[4] = "";
cpy2[0] = 0xE2;
cpy2[1] = 0x9C;
cpy2[2] = 0x85;
printf("cpy2 %s, %ld\n", cpy2, sizeof cpy2);
// https://www.compart.com/en/unicode/block/U+AC00
// 0xEA 0xB0 0x80
char ch[4] = "";
ch[0] = 0xEA;
ch[1] = 0xB0;
ch[2] = 0x80;
// ch[3] = 0xAC;
printf("ch %s, %ld\n", ch, sizeof ch);
// 0x0000AC00
// https://namu.wiki/w/UTF-8#toc
char han[4] = "가";
// 0xEA 0xB0 0x80
char ch2[4] = "";
ch2[0] = han[0];
ch2[1] = han[1];
ch2[2] = han[2];
ch2[3] = han[3];
printf("han[0]의 16진수 %x\n", han[0]);
printf("han[1]의 16진수 %x\n", han[1]);
printf("han[2]의 16진수 %x\n", han[2]);
printf("han[3]의 16진수 %x\n", han[3]);
printf("ch2 %s, %ld\n", ch2, sizeof ch2);
}