我的代码有问题,因为我试图找到可以满足我的要求的ASCII可打印范围内的字节,即如果我预定义字符串中的2个字节1与ascii范围中的1和将其总和设为0x210(十进制为528),但我无法正常工作
让我解释一下 我有一个字符串“ AABBCCDDEE”和ascii范围(33,128) 如果每个字节在ascii范围内与1个或多个字节进行异或运算,并加上所有异或运算,则输出为0x210
这是我的尝试,即使设置了条件,它也会不断添加到结果变量中
#!/usr/bin/env python
import random
asciiRange = list(range(33,128))
fixedKey = "aCaCaCaCaC"
hKey = []
result = 0
for i in fixedKey:
hKey.append(ord(i))
while result != 528:
key = random.choice(asciiRange)
print result
for i in hKey:
result += i ^ key
print result
if result > 528:
break
答案 0 :(得分:0)
问题是您没有在每次迭代前将 int theCount = 0;
private void btnEnter_Click(object sender, EventArgs e)
{
int[] numbers = new int[20];
int num = 0;
for (int i = 0; i < 20; i++)
{
if (int.TryParse(txtBxStats.Text, out num);)
{
numbers[i] = num;
theCount++;
break;
}
}
lblNumCount.Text = $"{theCount} / 20";
}
设置为0。这是一个适用于小型重构的代码。
result
答案 1 :(得分:0)
中断确实会停止for
循环,但是您仍然需要添加一个中断才能退出while
循环,因为结果可能不等于528
。
此外,在相同条件下,if
语句将退出循环,因此while
循环不是必需的:
key = random.choice(asciiRange)
print result
for i in hKey:
result += i ^ key
print result
if result > 528:
break
或者您可以将while
循环条件更改为:while result <= 528: