我正在进行耀斑挑战(Memecat Battlestation),所以我决定这样做。绕过它,演示共享软件被绕过了,但是标志损坏了,所以我想我应该尝试完整版,我尝试完整版但我有一个错误
这是第一个Flare-On挑战,名为Memecat Battlestation,我运行的是Windows 7 64位,错误在VictoryForm.cs中
private static IEnumerable<byte> AssignFelineDesignation(byte[] cat, IEnumerable<byte> data)
{
byte[] s = BattleCatManagerInstance.InvertCosmicConstants(cat);
int i = 0;
int j = 0;
return data.Select(delegate (byte b)
{
i = (i + 1 & 255);
j = (j + (int)s[i] & 255);
BattleCatManagerInstance.CatFact(s, i, j);
return b ^ s[(int)(s[i] + s[j] & byte.MaxValue)];
});
}
Run Code Online (Sandbox Code Playgroud)
我曾期望它可以在没有任何错误的情况下进行构建,但是我遇到了以下错误:
'无法将类型'
System.Collections.Generic.IEnumerable<int>' 隐式转换为'System.Collections.Generic.IEnumerable<byte>'。存在显式转换(您是否缺少演员表?)'
Jon*_*eet 10
这行:
return b ^ s[(int)(s[i] + s[j] & byte.MaxValue)]
Run Code Online (Sandbox Code Playgroud)
...返回int,因为这是^您使用的运算符的类型。您可以将结果转换为byte:
return (byte) (b ^ s[(int)(s[i] + s[j] & byte.MaxValue)]);
Run Code Online (Sandbox Code Playgroud)
我个人会使用lambda表达式而不是匿名方法:
return data.Select(b =>
{
i = (i + 1 & 255);
j = (j + (int)s[i] & 255);
BattleCatManagerInstance.CatFact(s, i, j);
return (byte) (b ^ s[(int)(s[i] + s[j] & byte.MaxValue)]);
});
Run Code Online (Sandbox Code Playgroud)