我知道它很简单,但我仍然不知道。有人说三个是代表一个角色的7个比特,而有些人说的是8个。所以有人可以告诉我哪个是正确的吗?如果它是8位/字符那么多少位代表一个字节?如果它是7那么多少位代表一个字符,多少位代表一个字节?
答案 0 :(得分:2)
US-ASCII确实是每个字符7位。最高代码的值为127,表示DEL
控制字符。具有较高值的代码的任何字符集都不是US-ASCII(但可能是它的扩展名,例如Unicode)。
大多数微处理器使用8位的字节(=最小可寻址存储单元)。如果要对这些微处理器使用US-ASCII,您有两种选择:
在这种情况下,对简单程序的需求超过了对高效内存使用的需求。这就是为什么你通常使用一个8位单元(简称八位字节)来存储一个字符,即使每个字符只用7位单元编码。您只需将额外位设置为零(或者,在某些情况下,使用额外位进行错误检测)。
答案 1 :(得分:0)
我知道这是一个老问题,但是为了将来的读者;您可以通过以下(C#.NET)确定给定字符串(或字符串值)中有多少个字节:
Encoding.ASCII.GetByteCount("SomeString");
请记住在尝试计算字节数时使用正确的编码,因为每种编码的字节数都不相同
- 采用8位ASCII编码的ASCII字符为8位(1字节),尽管可以容纳7位。
- 采用ISO-8859-1编码的ISO-8895-1字符为8位(1字节)。
- 采用UTF-8编码的Unicode字符介于8位(1字节)和32位(4字节)之间。
- 采用UTF-16编码的Unicode字符在16(2字节)和32位(4字节)之间,尽管大多数常见字符占用16位。这是Windows内部使用的编码。
- 采用UTF-32编码的Unicode字符始终为32位(4字节)。
- UTF-8中的ASCII字符为8位(1字节),而UTF-16中的ASCII字符为16位。
- ISO-8895-1(0xA0-0xFF)中的其他(非ASCII)字符在UTF-8和UTF-16中将占用16位。