【问题标题】:Converting string to long for memory editing in C#在 C# 中将字符串转换为 long 以进行内存编辑
【发布时间】:2012-09-18 05:01:37
【问题描述】:

this question 开始,我需要将一些内存值设置为字符串,而不是 long。我在使用作弊引擎时注意到,如果我通过浏览内存区域将地址的值设置为字符串,则会有一个整数值,例如“6513249”为“abc”。

如何将字符串转换为这种形式,以用作长字符串?

谢谢。

【问题讨论】:

    标签: c# process long-integer memory-editing


    【解决方案1】:

    使用 Encoding.GetBytes 将字符串转换为具有正确编码的字节数组,而不是直接写入字节,毕竟您可能不需要转换为 long。

    如果您必须转换为 long - 请确保您了解 endiannes 以知道应该首先使用哪些字节,再次计算编码并将字符(可能包括代理对)转换为字节数组 Encoding.GetBytes 并结合 long通过对字节使用移位运算符(>><<),每 8 个字节中取出一个值。将结果字节数组包装在 MemeoryStream 中可能比 BinaryReader 和读取长值更容易。

    【讨论】:

    • 好的,现在就到某个地方。使用 GetBytes 将“abc”返回为“610062006300”而不是“6513249”。另外,我有一些值(例如“10”)需要字节数组等于,如果这有意义的话。让字符串“10”通过字节数组得到“3130”,我需要它是原始值。
    • 差点忘了:我还需要在设置值之前将地址清零,我会用什么来做呢?
    • @Kaikz,无论您说什么都没什么意义,因为您随机使用字符串作为整数的字符串、十进制或十六进制表示。请自己弄清楚您需要什么编码,并整理出您要编写的内容。具有正确编码的 GetBytes 是您将字符串转换为字节所需的全部,不需要转换数字。不要忘记作弊通常很快就会过时 - 因此请确保您的作弊代码易于配置:)
    • 我认为是这样。德普。问题是每当我设置地址的值时,它都会编辑this image 中的灰色框,但是我需要更改黄色框。哈哈,虽然作弊听起来不错,但更多的是改变了游戏中遗漏的东西。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    相关资源
    最近更新 更多