私は基本的に使用したファイル形式と一致するように文字列を20文字ずつシフトしようとしています。私はC#は、CでASCIIシフトシフタを実行する必要があります。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace test_controls
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public string text3;
private void button1_Click(object sender, EventArgs e)
{
// This is a test conversion of my pdw save routine from basic to c#
int pos = 0;
string text = label1.Text;
int t = text.Length; // get the length of the text
while (pos < t + 1) ;
string s = text.Substring(pos, 1); // get subsstring 1 character at a time
byte[] ASCIIValues = Encoding.ASCII.GetBytes(text); // convert that character to ascii
foreach (byte b in ASCIIValues)
{
int temp = b;
temp = temp + 20; // add 20 to the ascii value
char text2 = Convert.ToChar(temp); // convert the acii back into a char
text3 =""+ text2.ToString(); // add the char to the final string
}
label1.Text = text3; // rewrite the new string to replace the old one for the label1.text
}
}
}
問題はそれだけで何もしないと反応しないで、次のコードを使用していると私は応答しないプログラムを終了するウィンドウを指示する必要があります。明確にするために、私はC#でwinformsを使ってシフト・サイファーを作っています。このコードのすべては、私はさまざまな答えで見つけて一緒につなぎました。 Vbやその他の基本では、文字列内の各文字のascii値を取得して、数学を実行し、chr $コマンドを使用して戻します。
ご協力いただければ幸いです。
while(pos
Cameron
"temp = temp + 20"を実行するのは間違いです。多くの文字が文字ではなくなります。たとえば、2のシフトを行っている場合、 "z"を "b"に対応させると、減算(加算ではありません)が必要になります。この例では、z = 122と122 + 20 = 142が有効なASCII文字ではないことに注意してください。 – EJoshuaS
私はちょうど文字に戻って文字に戻って文字列に戻りたいと思っています。私のファイル形式では、プラス20のため、スペースもスペースがない結果の文字列とは異なる文字になります。次に、必要に応じてプロセスを元に戻し、暗号化された形式で保存して読み込みます。私はそれが一点で自分自身が無限ループではなかったのか疑問に思いました。私がそれをコード化したのは、基本的に私は次のループのために使用したので、whileは文字列の終わりまで処理すると思ったからです。 – Larryrl