通过增加c#中的ascii码来打印下一个字母

本文关键字:打印 下一个 ascii 增加 中的 | 更新日期: 2023-09-27 18:12:09

我可以有算法如何解决这个程序?

编写一个程序,其中用户将字符串作为输入,并使用字符串的ASCII值增加每个字母,并在c#控制台应用程序中打印输出。

(就像用户输入Abcd一样,它将打印Bcde)

通过增加c#中的ascii码来打印下一个字母

. net中的字符串是UTF-16代码单元的序列。(这也适用于Java, JavaScript, HTML, XML, XSL, Windows API,…)字符串的。net数据类型是String, UTF-16代码单元的。net数据类型是Char。在c#中,您可以使用它们或它们的关键字别名stringchar

UTF-16是Unicode字符集的几种编码之一。它将每个Unicode码点编码为一个或两个代码单元。当使用两个代码单元时,它们被称为代理对,顺序为高代理然后低代理。

ASCII是Unicode的子集。与ASCII相同的Unicode字符正好是U+0000到U+007F。UTF-16将它们分别编码为一个代码单元:''u0000'到''u007F'。ASCII字符集的单一编码将每个字符编码为一个字节:0x00到0x7f。


问题语句涉及"string"、"alphabet"、"ASCII"、"c#"answers"console"。每一个都必须被理解。

不幸的是,有些人用"ASCII"来表示"字符代码"。在"c#"字符串"上下文中,字符代码表示Unicode码点或UTF-16代码单元。您可以做一个简化的假设,即输入字符不需要UTF-16代理字符对,甚至范围是U+0000到U+007F。

"字母表"既是一个数学术语也是一个语言学术语。在数学(和计算机科学)中,"字母表"是一组符号,通常按顺序排列。在语言学中,"字母表"是一种特定语言的书写系统中使用的一系列基本字母。它通常由"语言学院"定义,可能包括也可能不包括语言中使用的所有形式的字母。例如,公认的英语字母表不包括带有任何变音符号、重音或连号的字母,即使它们在英语单词中使用。此外,在书写系统中,部分或全部字母可以有大写、小写、标题大小写或其他形式。对于这个问题,由于提到了ASCII,并且ASCII包含大写和小写的基本拉丁字母,您可以定义两个技术字母A-Z和A-Z,按它们的UTF-16代码单位值排序。

由于您希望为字母表中的每个字符增加字符代码,因此您必须决定如果结果不在字母表中会发生什么。结果是否真的是一个字符,因为肯定有最后一个可能的字符(或许多不同的UTF-16代码单元范围)?你可以考虑把字母表中的第一个字符换行。Z ->, Z ->。

最后一个是"console"。控制台具有字符编码设置。(去chcp看看你的答案。)您的程序将对控制台进行读写操作。当您写入时,它使用一种字体来生成接收到的字符的图像。如果一切都符合,那就太好了。如果没有,你可以问一些问题。底线:当程序读写时,输入/输出函数进行编码转换。因此,在您的程序中,对于StringChar,编码是UTF-16。


现在,StringChar的序列,因此您可以使用几种分解技术,包括foreach:

foreach (Char c in inputString)
{
    if (Char.IsSurrogate(c)) throw new ArgumentOutOfRangeException();
    if (c > ''u007f') throw new ArgumentOutOfRangeException();
    // add your logic to increment c and save or output it
}

一个简单易懂的方法:

byte[] bytes = System.Text.Encoding.ASCII.GetBytes("abcd".ToCharArray());
for (int i = 0; i <= bytes.GetUpperBound(0); i++)
{
    bytes[i]++;
}
Console.WriteLine(System.Text.Encoding.ASCII.GetString(bytes));

一种可能的解决方案是将字符串转换为字符数组,然后遍历该数组。

对于数组中的每个元素,将值加1并强制转换回字符类型。(基本上这是可行的,因为char和int是相同的,除了根据ASCII表具有值限制的char,并且计算机可以将图像与char关联)

我希望这回答了你的问题。