1

コンソール アプリケーションでこのような問題に遭遇したことはありません - かなり恐ろしいビープ音が聞こえ、プログラム (および私のコンピューター) が一瞬フリーズし、その後コンソールが動作を停止するだけです。エラー メッセージも表示されません。

私はこのテキストファイルを持っています。私はそれを次のように読み、数字をリストに分割しました:

string path = @"C:\Users\owner\Documents\Quick Access\cipher1.txt";
string data = "";
using (StreamReader sr = new StreamReader(path))
{
    data = sr.ReadToEnd();
}

List<int> encryptedNums = new List<int>();
foreach (string s in data.Split(','))
{
    encryptedNums.Add(Convert.ToInt32(s));
}

各数値は ASCII 文字を表します。これらの数値を文字列に連結したい:

string encryptedString = "";

//WTF???? 
foreach (int n in encryptedNums)
{
    encryptedString += (char)n;
}

ループにより、foreach非常に奇妙な変換が行われます。文字を 1 つずつ出力してASCII テーブルと比較すると、結果が明らかに一致していないことがわかります。たとえば、数字の 2 はスマイリー型の数字になります。変換の 1 つで、ビープ音が発生します。

これが本当に私を悩ませているものです。基本的に同じことを行う別の方法があります-整数のリストがあり、それらを文字列に変換しようとします:

string s = "";
foreach (int n in decrypted)
{
    s += (char)n;
}

しかし、これは実際には適切な文字列になります! エラーの場所と、最初の変換が失敗した理由がわかりませんが、2 番目の変換 (何かが欠けていない限り、コードは同じです) は問題ありません。

助けていただければ幸いです。

最終的に原因となるコードは、クラッシュが印刷されていることencryptedStringです。

これが完全なコードです。

4

2 に答える 2

2

2 番目が機能し、最初が機能しない理由は、 の値nが異なるためです。

表示される文字は 32 ~ 126 の範囲 (および 、 、 の場合はそれぞれ 9、10、および 13 \t)\n\rなります。復号化はまったく行われていません)。

読みやすいテキストにするために、テキスト ファイル内の int のリストに対して何かを行う必要があります。

于 2013-05-01T21:27:11.497 に答える
1

あなたの問題は、ベル文字または'\7'.

http://en.wikipedia.org/wiki/Bell_character

通常、その文字を印刷するとビープ音が鳴り、短時間に複数回印刷すると、ほとんどのシステムでアプリケーションがフリーズします。

于 2013-05-01T21:23:36.250 に答える