Clyde Wu
13 years ago
所以說,在console locale=utf8的狀況下,scanf("%s", &str),然後打"一";不考慮buffer overflow, str[]存的就是"一"的utf8編碼嘛?
latest #11
Kanru™
13 years ago
echo 一|hd
Clyde Wu
13 years ago
(worship)(worship)(worship)
Clyde Wu
13 years ago
看來是沒錯,可是printf("%x", str[0])出來,char只有1 byte,卻給我ffffffe4 4bytes?
立即下載
Kanru™
13 years ago
char 自動轉成 int 了
Clyde Wu
13 years ago
喔喔喔!! 原來如此!! 如何避免? 是在哪一步被轉的啊? (char)str[0] 狀似不行
Clyde Wu
13 years ago
找到了... 好像是unsigned char? 我先試試看! 感謝大大
UNARY
13 years ago
因為它 push 到 stack 的單位不只一個 char 大
UNARY
13 years ago
也可以用 printf( "%x", 0xFF & str[0]);
Kanru™
13 years ago
用 printf("%hhx", str[0]); 吧
UNARY
13 years ago
hhx 在預設支援 C99 時好用,只是 VC 吃了 hhx 還是當作 hx
Clyde Wu
13 years ago
謝謝兩位大大!!
back to top