【发布时间】:2013-06-06 08:02:39
【问题描述】:
我在 C# 中有此代码,但是用于在块内移动的代码会覆盖用于移动 d 字母的代码。我该如何解决这个问题,以便它们不再相互覆盖?
这是代码:
private void Crypt(int n, int m, int d)
{
// make a block from the string
string invoerstring = invoer.Text;
uitvoer.Text = invoerstring;
// shift d letters
char[] buffer = invoerstring.ToCharArray();
for (int i = 0; i < buffer.Length; i++)
{
// Letter.
char letter = buffer[i];
// Add shift to all.
letter = (char)(letter + d);
// Subtract 26 on overflow.
// Add 26 on underflow.
if (letter > 'z')
{
letter = (char)(letter - 26);
}
else if (letter < 'a')
{
letter = (char)(letter + 26);
}
// Store.
buffer[i] = letter;
}
uitvoer.Text+=buffer;
//shift characters inside a block
var shift = String.Concat(invoerstring.Skip(m).Concat(invoerstring.Take(m)));
uitvoer.Text = shift;
}
private void button1_Click(object sender, EventArgs e)
{
Crypt(8,2,1);
}
【问题讨论】:
-
您将值分配给
uitvoer.Text两次。所以最后一个值是不变的。你在寻找什么结果? -
我知道我给 uitvoer.Text 赋值了两次。我希望两个值都被坚持,然后我得到了我正在寻找的结果。我该怎么做?
-
@Sybren:嗨,我想知道你的进展如何 :)
标签: c# encryption overwrite