我对确定ASCII编码文本中的字节数有点困惑。我无法理解ASCII编码的工作原理。我们以255
为例。在十六进制中,它的值为0xFF
,其大小为1字节(255: 1111 1111
)。在ASCII编码中,2是0x32
,5是0x35
所以如果我们想要写255,那么它将是255 = {0x32, 0x35, 0x35}
每个的大小是1字节。总共3个字节?我的意思是,如果我想编写纯文本,如char *buffer[]="Hello!";
我应该计算字符数,并假设这是总共的字节数?
答案 0 :(得分:2)
你在这里混合了三种不同的,不相关的表现形式。
如果您希望将数字255表示为ASCII,则它将是字符串"255"
,它以二进制形式显示为0x32 0x35 0x35 0x00
。
总共有3个字节?
可能是4,因为你也想要终止字符串,或者你不能将它用于C标准库字符串处理函数,例如printf("%s", str)
。
char *buffer[]="Hello!";
这一行不正确,您需要解决指向字符串文字char* buffer
的指针或分配的字符数组char buffer[]
。您编写的代码是一个指针数组(数组大小为1项),这不是您想要的。编译器应该抱怨这一点。
我应该计算字符数并假设这是总共的字节数吗?
假设ASCII编码确实存在。 "Hello!"
将包含7个字节:6个数据+ 1个空终止符。在字符串文字的情况下,您实际上可以使用代码检查此大小:
printf("%zu", sizeof("Hello!")); // prints 7