我见过很多地方说:
最大字符数为255.
其中字符是ASCII。有技术原因吗?
编辑:我知道ASCII由8位表示,因此有256个不同的字符。问题是为什么它们指定最大字符数(带有重复项)为255.
答案 0 :(得分:6)
扩展ASCII 是一个8位字符集。 (原始ASCII是7位,但这与此无关。)
8位表示可以引用2 ^ 8个不同的字符。
2 ^ 8等于256,并且当计数从0
开始时,最大ASCII字符代码的值为255。
因此,声明:
最大字符数为255。
错了,应该是:
最大字符数为256,可能的最高字符代码为255。
要更好地了解字符如何映射到0到255之间的数字,请参阅the 8-bit ASCII table。
答案 1 :(得分:5)
我认为你所指的限制是一串ASCII字符的长度。
由于优化技术而出现限制,其中存储较小的字符串,第一个字节保存字符串的长度。由于一个字节只能容纳256个不同的值,因此最大字符串长度为255,因为第一个字节是为保存长度而保留的。
因此,一些较旧的database systems和programming languages对其原生字符串类型有此限制。
答案 2 :(得分:1)
是否存在技术原因?
是的。早期的ASCII编码标准是7位日志,可以代表2 ^ 7 = 128(0..127)个不同的字符代码。
您在这里讨论的是后来开发的ASCII编码的变体,它是8位日志,可以容纳2 ^ 8 = 256(0 ... 255)字符代码。
有关相同内容的详情,请参阅Wikipedia。
答案 3 :(得分:1)
限制为255,因为9 + 36 + 84 + 126 =255。第256个字符(实际上是第一个字符)为零。
使用组合公式Ck(n)= n / k = n!/(k!(nk)!)查找1,2,3,4,5,6,7的非重复组合数,您将得到8位数字:
由于它是M的对称组,因此不必包含5到8位数字。换句话说,4元素生成器是一个八位位组的组操作,其组操作具有255个排列。
有趣的是,只需要3个数字就可以“计数”到1000(在789之后,其余数字是先前组合的重复)。
答案 4 :(得分:0)
计数从0开始到255结束,这意味着从1到255之间有255个计数,包括0以后,计数变为256。
用于打印所有256个字符的程序
#include<stdio.h>
int main() {
for (int i = 0; i <= 255; i++) {
printf("%d = %c\n", i, i);
}
return 0;
}
答案 5 :(得分:0)
ASCII 表中的字符总数为 256(0 到 255)。 0 到 31(共 32 个字符)称为 ASCII 控制字符(字符代码 0-31)。 32 到 127 个字符称为 ASCII 可打印字符(字符代码 32-127)。 128到255称为扩展ASCII码(字符码128-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