C#Ascii转换并返回

时间:2014-10-11 08:04:31

标签: c# arrays string char ascii

好吧,所以我正在制作一个基本的ceaser加密程序,它将每个字符偏移给定的数量,这是通过使用字符ASCII键然后添加应该被键偏移的量来完成的。

基本上我可以看到为什么我的程序不工作而且没有返回我希望它返回的字符串,这里是加密的伪代码:

 `Type in text
  Type in encryption key
     Display Encrypt(text, key)
        function Encrypt(text,key)
          For each letter in text
            Get its ascii code
              add the key to the ascii code
                  Turn this new ascii code back to a character
                      Append character to ciphertext string

结束 return ciphertext`

第一个输入是一个发送,第二个输入是它被

偏移的数字

这是我的C#代码:

static void Main(string[] args)
    {
        Console.WriteLine("Write a Sentance!");
        string text = Console.ReadLine();
        Console.WriteLine("How many characters do you want to ofset it by?");
        int key = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine(encrypt(text,key));
        Console.ReadLine();

    }

    static string encrypt(string text, int key)
    {
        string ciphertext = "";
        int y = 0;
        char[] letters = text.ToCharArray();
        for(int x = 0; x <= letters.Length; x++)
        {
            int AsciiLET = (int)letters[y];
            string Asciiletter = (AsciiLET + key).ToString();
            ciphertext += Asciiletter;
            y++;  
        }
        return ciphertext;

    }

1 个答案:

答案 0 :(得分:1)

有些不对劲:

  1. 只能在.Length之前转到一个。即<而非<=
  2. xyy已移除
  3. 数字(ToString)上的
  4. (AsciiLET + key)会为您提供字符串中的数字,例如"89"
  5. 使用key
  6. 现在看起来像:

    static string encrypt(string text, int key)
    {
        string ciphertext = "";
        char[] letters = text.ToCharArray();
        for (int x = 0; x < letters.Length; x++) // see 1
        {
            int AsciiLET = (int)letters[x]; //2
            char Asciiletter = (char)(AsciiLET + key); //3 & 4
            ciphertext += Asciiletter;
        }
        return ciphertext;
    }