2015-12-16 88 views
3

我一直在創建一個破解代碼的軟件,我需要將字符從文本文件轉換爲ASCII字符以允許轉換。我已經在下面留下了我的代碼,但有人可以解釋我如何做到這一點?將字符轉換爲ASCII字符

using System; 
using System.IO; 

namespace CipherDecoder 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string fileText = @"C:/Users/Samuel/Documents/Computer_Science/PaDS/caeserShiftEncodedText"; 

      string cipherText = File.ReadAllText(fileText); 

      string output = @"C:\\Users\Samuel\Documents\Computer_Science\PaDS\output.txt\"; 

      char[] cipherChars = new char[691]; 

      int j = 0; 

      foreach (char s in cipherText) 
      { 
       cipherChars[j] = s; 

       j++; 
      } 

      for(int i = 0; i < cipherChars.Length; i++) 
      { 
       cipherChars[i] = cipherChars[i]; 
      } 
     } 
    } 
} 
+2

有一個從'char'到'int'的隱式轉換,爲您提供UTF-16代碼單元值作爲數字。對於ASCII字符,這與ASCII值相同。你當前的代碼有點奇怪 - 第二個循環沒有任何作用,第一個會更簡單,因爲'char [] cipherChars = cipherText.ToCharArray();' –

+0

可能的重複 http://stackoverflow.com/問題/ 5002909 /正在使用ASCII字符的字符串的ASCII值 –

+0

很好的解釋@JonSkeet –

回答

3

要獲得int值到int數組中,您可以使用LINQ選擇來完成此操作。例如:

string fileText = @"C:/Users/Samuel/Documents/Computer_Science/PaDS/caeserShiftEncodedText"; 

int [] charactersAsInts = File.ReadAllText(fileText).Select(chr => (int)chr).ToArray(); 
+0

我收到錯誤:CS1061 C#'string'不包含''的定義和沒有擴展方法''接受'string'類型的第一個參數可以找到(你是否缺少使用指令或程序集引用?)。 – GiggyLapisar

+2

嘗試添加'使用System.Linq;'獲取.Select擴展方法。您可能還需要添加參考。你在使用VisualStudio嗎? – mortb

+0

您可能還需要將對System.Core的引用添加到項目中(如果使用VisualStudio) – mortb

1

可以,

var asciiNumbersArray = cipherText.Cast<int>().ToArray(); 

如果你投一個char爲int你在十進制的ASCII數字。