256表示ascii表中128个唯一字符的含义

Lyd*_*dia 37 ascii

如果我需要检查字符串是否有唯一字符,我理解如果我们正在考虑Ascii表中的字符,那么它们将有128个.

但是,为什么我们需要创建一个大小为256的布尔数组来保存128个字符以检查元素是否在字符串中至少存在一次?大小128的布尔数组不应该足够吗?

以下是"Cracking the Coding Interview"一书的引用:

if (str.length() > 128) return false;
boolean[] char_set = new boolean[256]; //which is strange since it clearly says over 128 its false
Run Code Online (Sandbox Code Playgroud)

.....

MOH*_*RMA 20

基本上,我们只使用128个字符,主要用于程序期间.但ASCII表中的字符总数为256(0到255).0到31(总共32个字符)被称为ASCII控制字符(字符代码0-31).32到127个字符称为ASCII可打印字符(字符代码32-127).128到255被称为扩展ASCII码(字符代码128-255).

检查参考:http://www.ascii-code.com/

QWERTY(ENGLISH)键盘中没有大多数扩展的ASCII字符,所以这就是原因,作者在"Cracking the coding interview"一书中占了128个字符.


小智 14

不,有256个ASCII字符.这包括标准ASCII字符(0-127)和扩展ASCII字符(128-255).

欲了解更多信息.请参阅:http: //www.flexcomm.com/library/ASCII256.htm

  • "扩展ASCII"不是ASCII; 它也不是一个字符集.通常,如此描述的字符集具有一个字节编码.但是,并非所有字符都有256个字符(例如Windows-1252).在Windows编程中,此类字符集称为ANSI.无论你怎么称呼它们,知道使用哪一个通常是至关重要的,所以最好避免使用"扩展ASCII"这个术语. (10认同)

O. *_*nes 8

Many people these days use the term "ASCII" in a sloppy fashion to describe ISO-8859-1 (also known as Latin-1), a character set that includes the [32 .. 126] printable-character values in the old-timey ASCII character set and also values in the range [128..255]. Latin-1 does a reasonably good job of covering Western European languages, whereas ASCII is limited to the non-accented characters used in basic English.

ASCII还包括[0-31]和127范围内的控制字符.这些字符不代表可打印字符(尽管unicode在这些位置提供字符).它们是返回,换行,制表符,ctrl-c,换页等.其中一些是电传和电传机器的旧时代的延续.

带有8通道纸带打孔器和读卡器的电传打字机

请注意纸带如何在每帧中有八个位位置.这些是ASCII/Latin-1的位."删除"又称Rubout是127或0111 1111.为什么?因为可以打出磁带上的所有七个孔,所以擦掉一个角色.

这可能解释了某人使用256位数组来制表那种字符集中的文本的建议.

  • ASCII的范围是0..127; 它包括控制字符. (8认同)

Gun*_*son 6

我相信在同一函数中使用 128 和 256 是该书版本中的一个错误。在较新的第 6 版(2016 年)中,代码示例指出:

if (str.length() > 128) return false;
boolean[] char_set = new boolean[128];
Run Code Online (Sandbox Code Playgroud)

作者添加了评论:

假设 256 个字符就可以了。扩展 ASCII 就是这种情况。

因此,对于这本书的练习,请使用128256,而不是两者都使用。