Character encoding 为什么限制是255

Character encoding 为什么限制是255,character-encoding,char,ascii,Character Encoding,Char,Ascii,我见过很多地方说: 最大字符数为255 其中字符为ASCII。这有技术上的原因吗 编辑:我知道ASCII由8位表示,因此有256个不同的字符。问题是为什么他们指定最大字符数(包含重复字符)为255 扩展ASCII是一个8位字符集。(原始ASCII为7位,但这与此处无关。) 8位表示可以引用2^8个不同的字符 2^8等于256,当计数从0开始时,最大ASCII字符码的值为255 因此,声明: 最大字符数为255 如果是错误的,则应改为: 最大字符数为256,最大字符代码为255 要更好地了解字符如

我见过很多地方说:

最大字符数为255

其中字符为ASCII。这有技术上的原因吗

编辑:我知道ASCII由8位表示,因此有256个不同的字符。问题是为什么他们指定最大字符数(包含重复字符)为255

扩展ASCII是一个8位字符集。(原始ASCII为7位,但这与此处无关。)

8位表示可以引用2^8个不同的字符

2^8等于256,当计数从
0
开始时,最大ASCII字符码的值为255

因此,声明:

最大字符数为255

如果是错误的,则应改为:

最大字符数为256,最大字符代码为255

要更好地了解字符如何映射到0到255之间的数字,请参阅

这有技术上的原因吗

有。早期的ASCII编码标准是7位日志,它可以表示2^7=128(0..127)个不同的字符代码

这里讨论的是后来开发的ASCII编码的一种变体,它是8位日志,可以保存2^8=256(0..255)个字符的代码


请参阅以了解更多信息。

我假定您所指的限制是ASCII字符字符串的长度

这种限制是由于一种优化技术造成的,在这种技术中,存储较小的字符串时,第一个字节保留字符串的长度。由于一个字节只能容纳256个不同的值,最大字符串长度为255,因为第一个字节是为存储长度而保留的


一些较旧的,因此对其本机字符串类型有此限制。

限制为255,因为9+36+84+126=255。第256个字符(实际上是第一个字符)为零

使用组合公式Ck(n)=n/k=n/(k!(n-k)!)要查找1,2,3,4,5,6,7,8位的非重复组合数,您可以得到:

位数:12345678 组合数:9 36 84 126 84 36 9 不需要包含5-8位数字,因为它是M的对称群。换句话说,4元素生成器是八位组的群操作,其群操作有255个置换


有趣的是,它只需要3位数字就可以“计数”到1000(789之后,其余的数字是以前组合的重复)。

计数从0开始,到255结束,这意味着从1到255有255个计数,包括0后,它变为256个

打印所有256个字符的程序

#包括
int main(){

对于(int i=0;iASCII表中的字符总数为256(0到255)。0到31(总共32个字符)称为ASCII控制字符(字符代码0-31)。32到127个字符称为ASCII可打印字符(字符代码32-127)。128到255称为扩展ASCII代码(字符代码128-255)


您链接的页面的介绍性文本表示它不是ASCII。还请注意,该表列出的字符少于256个。@TomBlodget:Huh?当然是ASCII,它写在整个页面上。您在哪里看到它不是ASCII的注释?并且,有256(0-255)个符号,正如我所说的。“根据ISO 8859-1和Microsoft®Windows Latin-1,您将在此网页上找到8位256个字符。“因此,它是许多字符集中的一个。在处理字符集和编码时,有必要通过名称或引用线程/进程/用户/操作系统默认值来说明是哪一个。它看起来像。我没有检查整个表,但我检查了81、8D、8F、90、9D处的孔。@TomBlodget:好的,我明白你的意思了。:)我的回答确实过于简单化了,但我认为回答原来的问题就足够了。不过,感谢您的注释。请记住,没有一个字符集被称为“扩展ASCII”。准确说出哪个字符集(例如,CP437和Windows-1252)非常重要。不确定该声明来自何处,但可能与C语言将0视为字符串终止符有关。无论答案如何,上述ASCII中约255个字符的语句都是错误的。它忘记了00h值的八位字节,使用扩展ASCII集,并忘记了孔(未映射的字节)在ASCII字符集中。这种注释通常放在人们不理解字节、文本和以null结尾的
char*
值之间的区别的地方。如果发现类似的语句并期望出现任何情况(特别是错误和缓冲区溢出),请小心操作。我认为问题是指字符串,而不是字符,这是最好的答案。我注意到在某些数据库中,某些文本数据类型的默认字符串限制为255个字符。
The ASCII value of a-z  =  97-122
The ASCII value of A-Z  =  65-90
The ASCII value of 0-9  =  48-57