列表保持相同的第一个值,即使值发生变化
List keeps getting same first value, even though value changes
我正在编写加密代码,更具体地说:
我目前正在写一个加密字母然后解密它们的检查,以查看它们是否可以,然后将解密的输出与初始输入进行比较。
我检查这个是因为解密公式使用 cos^-1
不能使用值。
不幸的是,字母 (a=1, b=2, z=26, etc)
的整数列表不断添加相同的第一个值,即使值发生变化。
部分代码:
foreach(int x in LetInt) {
DoubInt++;
try {
CheckLetInt.Add(Convert.ToInt64(Math.Acos(Math.Pow((((Math.Tan((x+1) / (180/Math.PI)) / Math.Sin((x+1) / (180/Math.PI))) * (Math.Cos(A / (180/Math.PI)) * B)) - 1) / (Math.Cos(A / (180 / Math.PI)) * B), -1)) * (180 / Math.PI)));
Console.WriteLine("Correct number:" + Convert.ToInt64(Math.Acos(Math.Pow((((Math.Tan((x+1) / (180/Math.PI)) / Math.Sin((x+1) / (180/Math.PI))) * (Math.Cos(A / (180/Math.PI)) * B)) - 1) / (Math.Cos(A / (180 / Math.PI)) * B), -1)) * (180 / Math.PI)));
Console.WriteLine("List content:" + CheckLetInt[DoubInt - 1]);
CheckLetter.Add(LetPos[Convert.ToInt64(CheckLetInt[DoubInt - 1]) - 1]);
} catch(Exception) {
ValueError.Visible = true;
ClearAll();
Console.WriteLine("Caught.");
}
}
输出:
有人知道发生了什么事吗?
"Correct Number" 和 "List Content" 公式是一样的。
Link to the project (it's a program so the code by itself doesn't work)
稍后在循环中执行:
if(string.Join("", CheckLetter) == string.Join("", Letters.ToArray())) {
...
} else {
ClearAll();
}
您永远不会在循环中修改 Letters,但您会修改 CheckLetter,因此这将主要 return 错误,调用 ClearAll() 方法。
在 ClearAll() 中,您将 DoubInt 设置回零 - 因此始终显示第一个条目
DoubInt = 0;
请注意,这不是 'encrypt' 任何事情的好方法。如果你只是在玩,那没关系,但如果你想学习密码学,如果你认为这是 'encryption'
,你应该先阅读相同的基础知识
我正在编写加密代码,更具体地说:
我目前正在写一个加密字母然后解密它们的检查,以查看它们是否可以,然后将解密的输出与初始输入进行比较。
我检查这个是因为解密公式使用 cos^-1
不能使用值。
不幸的是,字母 (a=1, b=2, z=26, etc)
的整数列表不断添加相同的第一个值,即使值发生变化。
部分代码:
foreach(int x in LetInt) {
DoubInt++;
try {
CheckLetInt.Add(Convert.ToInt64(Math.Acos(Math.Pow((((Math.Tan((x+1) / (180/Math.PI)) / Math.Sin((x+1) / (180/Math.PI))) * (Math.Cos(A / (180/Math.PI)) * B)) - 1) / (Math.Cos(A / (180 / Math.PI)) * B), -1)) * (180 / Math.PI)));
Console.WriteLine("Correct number:" + Convert.ToInt64(Math.Acos(Math.Pow((((Math.Tan((x+1) / (180/Math.PI)) / Math.Sin((x+1) / (180/Math.PI))) * (Math.Cos(A / (180/Math.PI)) * B)) - 1) / (Math.Cos(A / (180 / Math.PI)) * B), -1)) * (180 / Math.PI)));
Console.WriteLine("List content:" + CheckLetInt[DoubInt - 1]);
CheckLetter.Add(LetPos[Convert.ToInt64(CheckLetInt[DoubInt - 1]) - 1]);
} catch(Exception) {
ValueError.Visible = true;
ClearAll();
Console.WriteLine("Caught.");
}
}
输出:
有人知道发生了什么事吗?
"Correct Number" 和 "List Content" 公式是一样的。
Link to the project (it's a program so the code by itself doesn't work)
稍后在循环中执行:
if(string.Join("", CheckLetter) == string.Join("", Letters.ToArray())) {
...
} else {
ClearAll();
}
您永远不会在循环中修改 Letters,但您会修改 CheckLetter,因此这将主要 return 错误,调用 ClearAll() 方法。
在 ClearAll() 中,您将 DoubInt 设置回零 - 因此始终显示第一个条目
DoubInt = 0;
请注意,这不是 'encrypt' 任何事情的好方法。如果你只是在玩,那没关系,但如果你想学习密码学,如果你认为这是 'encryption'
,你应该先阅读相同的基础知识