下面两行代码之间的区别是什么

时间:2019-07-04 19:00:50

标签: c#

我无法理解为什么我们必须为文本添加"a"+randomtext.Next(0,26)

buffer[i] = (char)('a' + random.Next(0, 26));

buffer[i] = (char)( random.Next(0, 26));

4 个答案:

答案 0 :(得分:2)

这样您就拥有了字母表中的所有字母。

当您选择一个介于0到25之间的数字并将其转换为char时,您将在ASCII-Table中得到各种符号。

因此,您将'a'添加为int(值是97),使其实际上从ascii表中的正确位置开始。

所以可以说您随机4。

此行

(char)('a' + random.Next(0, 26));

将是

(char) ('a' + 4)
(char) (97 + 4)
(char) (101) => e

答案 1 :(得分:1)

如果不添加'a',则会创建一个无法打印的字符。 值“ a” +随机值可为您提供可打印的字符

您可以在以下链接中查看ASCII值:http://www.asciitable.com/mobile/

答案 2 :(得分:0)

ASCII文本编码使用字节的低7位来编码字符。并非所有这些字符都是可见的/可打印的(例如空格,制表符,换行符,文本结尾,传输结尾等)。

小写字母编码为值0x61('a')至0x7a('z')。通过在您的随机值上加上“ a”,您可以保证获得小写字母之一。否则,您只会得到不可打印的字符。

答案 3 :(得分:0)

很明显,此代码re 118n存在问题,但现在暂时忽略它……

为什么要添加“ a”的简单答案是更改放入缓冲区的值的范围。

可以通过简单地调整对random.Next(97,123)等的调用中的两个值来实现相同的结果,但是为了使代码易于理解,添加“ a”使其更明显地被接受值范围是编码器要添加到缓冲区的值。