【发布时间】:2017-01-09 02:20:44
【问题描述】:
这是我的代码:
#include <stdlib.h>
#include <stdio.h>
int main(int argc,char **argv){
printf("%x\n",*argv[1]);
return 1;
}
编译 (gcc -o main main.c) 后,我运行它并没有问题:
./main 1
31
注意:31 是1 的十六进制代码
但是当使用Unicode参数运行它时,打印十六进制的4Byte:
./main $(printf "\Udbb1")
ffffffed
什么问题?
【问题讨论】:
-
%x表示int,但您传递的是char值。 -
如果您希望它打印
dbb1,那么您将在阅读有关 Unicode 编码和(很可能)UTF-8 的有趣时光。大多数现代计算机上的单个char将无法容纳0xdbb1,因为它通常只有 8 位宽。