根据C标准,一个字节可以有8位以上。由于 ASCII 字符占用 8 位(技术上为 7 位),因此 ASCII(或 UTF-8)文件如何在具有 16 位字节的系统上进行编码?每个字符占用16位,还是两个字符串联成一个字节?
例如,给出以下代码:
char character;
FILE* file = fopen("file.txt", "r");
fread(&character, 1, 1, file);
如果文件是 ASCII 编码的并包含文本
ab
,则 character
是否包含 'a'
或 'a'
和 'b'
的某种串联?
仅仅因为某些奇怪的系统有 16 位字节,这并不会改变 ASCII/UTF8 的定义。因此,他们要么必须用零填充多余的位,要么可能使用 16 位符号表(以防有意义)。在一个 16 位变量中存储两个值听起来很成问题。
大多数此类系统都是 DSP 等,因此在大多数情况下,用户界面可能不会太多,在这种情况下也不需要字符串处理。