ASCII格式的数据大小

ASCII格式的数据大小,c,ascii,C,Ascii,我对确定ASCII编码文本中的字节数有点困惑。我不明白ASCII编码是如何工作的。让我们以255为例。在十六进制中,它的值是0xFF,大小是1字节255:1111111。在ASCII编码中,2是0x32,5是0x35,所以如果我们想写255,它应该是255={0x32,0x35,0x35},它们每个的大小是1字节。总共是3个字节?我的意思是如果我想写纯文本,比如char*buffer[]=Hello!;我是否应该计算字符数,并假设这是总字节数?您在这里混合了三种不同的、不相关的表示形式 1111

我对确定ASCII编码文本中的字节数有点困惑。我不明白ASCII编码是如何工作的。让我们以255为例。在十六进制中,它的值是0xFF,大小是1字节255:1111111。在ASCII编码中,2是0x32,5是0x35,所以如果我们想写255,它应该是255={0x32,0x35,0x35},它们每个的大小是1字节。总共是3个字节?我的意思是如果我想写纯文本,比如char*buffer[]=Hello!;我是否应该计算字符数,并假设这是总字节数?

您在这里混合了三种不同的、不相关的表示形式

11111111 B或FFh是十进制数255的纯二进制表示形式。 ASCII是一种非常古老的7位字符表,用于显示字符串,其中每个字符代码都有1个字节大。 将原始数字拆分为不同的字节,例如将255拆分为11b、101b、101b。 如果希望将数字255表示为ASCII,则应为字符串255,二进制形式为0x32 0x35 0x35 0x00

总共是3个字节

可能是4,因为您也需要null终止字符串,或者不能将其与C标准库字符串处理函数(如printf%s、str)一起使用

char*buffer[]=Hello

这一行不正确,您需要接受指向字符串文字字符*缓冲区的指针或分配的字符数组字符缓冲区[]。您编写的代码是一个数组大小为1项的指针数组,这不是您在这里想要的。编译器应该对此进行投诉

我是否应该计算字符数并假设这是总字节数

假设ASCII输入,那么确实如此。你好将包含7个字节:6个数据+1个空终止符。对于字符串文字,您实际上可以使用代码检查此大小:

printf("%zu", sizeof("Hello!")); // prints 7

你把三种不同的,不相关的表述混在一起了

11111111 B或FFh是十进制数255的纯二进制表示形式。 ASCII是一种非常古老的7位字符表,用于显示字符串,其中每个字符代码都有1个字节大。 将原始数字拆分为不同的字节,例如将255拆分为11b、101b、101b。 如果希望将数字255表示为ASCII,则应为字符串255,二进制形式为0x32 0x35 0x35 0x00

总共是3个字节

可能是4,因为您也需要null终止字符串,或者不能将其与C标准库字符串处理函数(如printf%s、str)一起使用

char*buffer[]=Hello

这一行不正确,您需要接受指向字符串文字字符*缓冲区的指针或分配的字符数组字符缓冲区[]。您编写的代码是一个数组大小为1项的指针数组,这不是您在这里想要的。编译器应该对此进行投诉

我是否应该计算字符数并假设这是总字节数

假设ASCII输入,那么确实如此。你好将包含7个字节:6个数据+1个空终止符。对于字符串文字,您实际上可以使用代码检查此大小:

printf("%zu", sizeof("Hello!")); // prints 7

Naughy:255不是ASCII编码的一部分。是的,但是如果我想写255,它是2,2和5?它是3字节大小吗?“我不明白ASCII编码是如何工作的”好吧,你会对Unicode很感兴趣,然后:@MartinJames我正在尝试实现一个基于ASCII编码的通信协议。问题是,我真的无法区分以字符0..9a..za..z和十六进制编码值0:0x00(十六进制)发送字母和数字,但在ASCII中是0x30等..如果我想写纯文本,比如char*buffer[]=Hello!;我是否应该计算字符数并假设这是总字节数?如果您正在使用此语法,并且希望将其视为可以使用C字符串函数操作的ASCII字符串,则终止null\0需要多出一个字节。你好使用7个字节,而不是6个字节。但是6是实际的字符数,如果你是这个意思的话。Naughy:255不是ASCII编码的一部分。是的,但是如果我想写255,它是2,2和5?它是3字节大小吗?“我不明白ASCII编码是如何工作的”好吧,你会对Unicode很感兴趣,然后:@MartinJames我正在尝试实现一个基于ASCII编码的通信协议。问题是,我真的无法区分以字符0..9a..za..z和十六进制编码值0:0x00(十六进制)发送字母和数字,但在ASCII中是0x30等..如果我想写纯文本,比如char*buffer[]=Hello!;我是否应该计算字符数并假设这是总字节数?如果您正在使用此语法,并且希望将其视为可以使用C字符串函数操作的ASCII字符串,则终止null\0需要多出一个字节。你好使用7个字节,而不是6个字节。但6是查拉的实际数量 角色,如果你是这个意思的话。