我如何将 IEnumerable<long> 转换为 long
How i convert IEnumerable<long> to long
我为游戏制作了一个版本检查器。我们无法从任何地方看到游戏版本。我们刚刚找到了带有 Cheat 引擎的版本字符串。这是版本字符串地址 = 56 32 2E ?? ?? ?? 00 00
我正在使用 Memory.DLL
进行 ArrayOfBytes
扫描,然后我想将其更改为字符串。
我试了很多方法都解决不了。
此处出错:
using Memory;
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
int pID = m.getProcIDFromName("Growtopia");
bool openProc = false;
if (pID > 0) openProc = m.OpenProcess(pID);
long myAobScan = m.AoBScan(0x700000000000, 0x7FFFFFFFFFFF, "56 32 2E ?? ?? ?? 00 00").Result; //ERROR AT HERE... // VERSION ADDRESS
vers.Text = myAobScan.ToString();
if (openProc)
{
m.writeMemory("0x7FF6F22818C7", "bytes", "0x90 0x90"); // BAN BYPASS
}
}
}
IEnumerable 参数:
public async Task<IEnumerable<long>> AoBScan(long start, long end, string search, bool writable = false, bool executable = true, string file = "")
IEnumerable 可以包含 0 到几十万个 long。所以你的问题是,它需要知道你想使用多长时间。
不知道 AoBScan 的行为方式(只知道参数对理解该方法的作用并不是很有帮助),很难判断您是只期待一个长的还是有很多可供选择的。
也就是说,要将 IEnumerable 转换为单个实例,您必须 select 其中一项。有几种方法可以做到...
您可以使用下面的方法拉出第一个
long myAobScan = m.AoBScan(0x700000000000, 0x7FFFFFFFFFFF, "56 32 2E ?? ?? ?? 00 00").Result.First();
或者下面拉出最后一个
long myAobScan = m.AoBScan(0x700000000000, 0x7FFFFFFFFFFF, "56 32 2E ?? ?? ?? 00 00").Result.Last();
或者写一个 Where 谓词来提取符合您期望的条件的谓词
long myAobScan = m.AoBScan(0x700000000000, 0x7FFFFFFFFFFF, "56 32 2E ?? ?? ?? 00 00").Result.Where(lng => lng > 10);
所有这些都会从 IEnumerable 中拉出一个 long。如果您需要将它们全部拉出并将它们转换为字符串,那就完全是另一个问题了。
我为游戏制作了一个版本检查器。我们无法从任何地方看到游戏版本。我们刚刚找到了带有 Cheat 引擎的版本字符串。这是版本字符串地址 = 56 32 2E ?? ?? ?? 00 00
我正在使用 Memory.DLL
进行 ArrayOfBytes
扫描,然后我想将其更改为字符串。
我试了很多方法都解决不了。
此处出错:
using Memory;
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
int pID = m.getProcIDFromName("Growtopia");
bool openProc = false;
if (pID > 0) openProc = m.OpenProcess(pID);
long myAobScan = m.AoBScan(0x700000000000, 0x7FFFFFFFFFFF, "56 32 2E ?? ?? ?? 00 00").Result; //ERROR AT HERE... // VERSION ADDRESS
vers.Text = myAobScan.ToString();
if (openProc)
{
m.writeMemory("0x7FF6F22818C7", "bytes", "0x90 0x90"); // BAN BYPASS
}
}
}
IEnumerable 参数:
public async Task<IEnumerable<long>> AoBScan(long start, long end, string search, bool writable = false, bool executable = true, string file = "")
IEnumerable 可以包含 0 到几十万个 long。所以你的问题是,它需要知道你想使用多长时间。
不知道 AoBScan 的行为方式(只知道参数对理解该方法的作用并不是很有帮助),很难判断您是只期待一个长的还是有很多可供选择的。
也就是说,要将 IEnumerable 转换为单个实例,您必须 select 其中一项。有几种方法可以做到...
您可以使用下面的方法拉出第一个
long myAobScan = m.AoBScan(0x700000000000, 0x7FFFFFFFFFFF, "56 32 2E ?? ?? ?? 00 00").Result.First();
或者下面拉出最后一个
long myAobScan = m.AoBScan(0x700000000000, 0x7FFFFFFFFFFF, "56 32 2E ?? ?? ?? 00 00").Result.Last();
或者写一个 Where 谓词来提取符合您期望的条件的谓词
long myAobScan = m.AoBScan(0x700000000000, 0x7FFFFFFFFFFF, "56 32 2E ?? ?? ?? 00 00").Result.Where(lng => lng > 10);
所有这些都会从 IEnumerable 中拉出一个 long。如果您需要将它们全部拉出并将它们转换为字符串,那就完全是另一个问题了。