次のコードは参考になりますか?
C
1#include <stdio.h>
2#include <locale.h>
3
4int main(void)
5{
6 setlocale(LC_CTYPE, "");
7 char mbs[] = "abcあいう"; // multibyte string
8 wchar_t wcs[] = L"abcあいう"; // wide character string
9
10 printf("mbs =");
11 for (int i = 0; ; i++) {
12 printf(" %02x", mbs[i] & 0xff);
13 if (mbs[i] == 0) break;
14 }
15 printf("\nwcs =");
16 for (int i = 0; ; i++) {
17 printf(" %04x", wcs[i] & 0xffff);
18 if (wcs[i] == 0) break;
19 }
20 printf("\nmbs = [%s]\n", mbs);
21 printf("wcs = [%ls]\n", wcs);
22 printf("mbs[0] = %c, mbs[3] mbs[4] = %c%c\n", mbs[0], mbs[3], mbs[4]);
23 printf("wcs[0] = %lc, wcs[3] = %lc\n", mbs[0], wcs[3]);
24}
実行結果
Plain
1mbs = 61 62 63 82 a0 82 a2 82 a4 00
2wcs = 0061 0062 0063 3042 3044 3046 0000
3mbs = [abcあいう]
4wcs = [abcあいう]
5mbs[0] = a, mbs[3] mbs[4] = あ
6wcs[0] = a, wcs[3] = あ
追記
このプログラムって 3042が「あ」の文字コードですよね?
できればこの文字コードをprintfなどに代入して「あ」と出力したいとおもっておりまして
逆はできないのでしょうか?
逆の意味がよく分かりませんが、
上のプログラムで、wcs[3] のコード 3042 を %lc で「あ」と出力しています。
次のコードは理解できますか?
C
1#include <stdio.h>
2#include <locale.h>
3
4int main(void)
5{
6 setlocale(LC_CTYPE, "");
7 printf("0x3042 = %lc\n", 0x3042);
8 printf("L'あ' = %#x\n", L'あ');
9}
実行結果
Plain
10x3042 = あ
2L'あ' = 0x3042
理解できてもできなくても返事をお待ちしております。