【发布时间】:2017-01-31 13:16:15
【问题描述】:
我正在尝试读取包含 UTF-8 格式字符的文件。
FILE * f = fopen(argv[1], "r");
if(f == NULL){
printf("cannot open %s\n", argv[1]);
exit(-1);
}
unsigned int c = getc();
while(c != EOF){
printf("%d\n", c); // UB
c = getchar();
}
如何读取文件以使它们以位表示?例如,它看起来像:0xA3。
现在它正在打印实际的整数。
基本上,我如何以位格式读取字符?
【问题讨论】:
-
由于您编写代码的方式,它正在打印整数。你能解释更多你想要做什么吗?你知道 UTF-8 是一种多字节编码吗?
-
将
printf("%d\n", c)更改为printf("%#x\n", c) -
现代二进制计算机中的所有数据都是二进制形式。这只是您选择如何显示该数据的问题。在您的情况下,我建议您阅读更多关于
printf及其不同格式的信息。此外,几乎 any beginners book 或教程会告诉您如何以十六进制表示法打印任何整数。 -
@RetiredNinja 基本上我的目标是将 UTF8 解码为 utf32 ...
-
x 而不是 printf 中的 d