在程序流程C#

时间:2015-06-03 12:12:59

标签: c#

我一直在阅读使用Cheat Engine的程序内存。我找到了计时器,但我无法将其转换为可读时间。这是4字节,我尝试的任何其他东西都给我带来胡言乱语。

1509949440 = 9:00

2030043136 = 12:06

16777215 = 0:00

2868903936 = 17:12

2801795072 = 16:42

C#中的任何等式或函数我可以用来将这些长数字转换回Minutes:Seconds格式?

2 个答案:

答案 0 :(得分:0)

这与编程语言无关。这只是数学。让我们将您的清单带入订单并以十六进制数字显示数字,任何事情都应该非常明显:

Time      Decimal       Hex
---------------------------------
00:00       16777215    00FF FFFF
09:00     1509949440    5A00 0000
12:06     2030043136    7900 0000
16:42     2801795072    A700 0000
17:12     2868903936    AB00 0000

以下是一些分歧:

From     To       Time Diff     Hex Diff    Hex Diff / Minute
-------------------------------------------------------------
17:12    16:42    0:30          400 0000    22 2222
12:06    09:00    3:06         1F00 0000    2A AAAA
09:00    00:00    9:00         5900 0001    2A 314D
17:12    09:00    8:12         5100 0000    2A 2576

正如您所看到的那样,每分钟的差异是抖动的。这可以通过以下事实来解释:内部数字的分辨率(您在内存中看到的内容)比您在UI中看到的分辨率(时间戳)更高。

所以也许只是玩一下并将一些值应用到内存中,看看你的期望是否匹配(例如1677721600应该与10:00左右的时间相匹配)。

答案 1 :(得分:0)

不知何故,我在做了很多猜测后找到了答案......

uint oddTimer = 1509949440;
double trueTimer = (oddTimer / 256^3) * 0.1;
return (uint)Math.Ceiling((double)trueTimer);

返回9:00

编辑:另外,当从内存中提取oddTimer时,我必须记住将其设置为ulong,因为给定的位数可以打破正常的int32。