ASCII格式的数据大小

时间:2018-03-12 14:44:07

标签: c ascii

我对确定ASCII编码文本中的字节数有点困惑。我无法理解ASCII编码的工作原理。我们以255为例。在十六进制中,它的值为0xFF,其大小为1字节(255: 1111 1111)。在ASCII编码中,2是0x32,5是0x35所以如果我们想要写255,那么它将是255 = {0x32, 0x35, 0x35}每个的大小是1字节。总共3个字节?我的意思是,如果我想编写纯文本,如char *buffer[]="Hello!";我应该计算字符数,并假设这是总共的字节数?

1 个答案:

答案 0 :(得分:2)

你在这里混合了三种不同的,不相关的表现形式。

  • 11111111b或FFh是十进制数255的纯二进制表示。
  • ASCII是一个非常古老的7位字符表,用于显示字符串,每个字符代码大1字节。
  • 将不同字节的原始数字拆分,例如将255拆分为11b,101b,101b,称为binary-coded decimal (BCD)

如果您希望将数字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