我正在进行耀斑挑战(Memecat Battlestation),因此我决定去做。。绕过它,演示共享软件被绕过了,但是标志损坏了,所以我想我应该尝试完整版,我尝试过完整版,但我遇到了错误
这是针对名为Memecat Battlestation的第一个Flare-On挑战,我正在运行64位Windows 7,错误在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)];
});
}
我期望它的构建没有任何错误,但是我遇到了这个错误:
'无法隐式转换类型 '
System.Collections.Generic.IEnumerable<int>
'到 'System.Collections.Generic.IEnumerable<byte>
'。一个明确的 转换存在(您是否缺少演员表?)'
答案 0 :(得分:10)
此行:
return b ^ s[(int)(s[i] + s[j] & byte.MaxValue)]
...返回一个int
,因为这是您使用的^
运算符的类型。您可以将结果强制转换为byte
:
return (byte) (b ^ s[(int)(s[i] + s[j] & byte.MaxValue)]);
我个人会使用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)]);
});