【发布时间】:2016-12-07 17:43:49
【问题描述】:
我正在尝试向游戏写入一些字节。
函数源码:
public void updateStatistic(string prestigeValue, string experience, string winrate, string loserate)
{
VAMemory vam = new VAMemory(process);
vam.WriteByte((IntPtr)0x145D114B9, byte.Parse(prestigeValue));
vam.WriteByte((IntPtr)0x145D114B5, byte.Parse(experience));
vam.WriteByte((IntPtr)0x145D10E05, byte.Parse(winrate));
vam.WriteByte((IntPtr)0x145D12240, byte.Parse(loserate));
}
很遗憾,我收到以下错误消息:
An unhandled exception of type 'System.OverflowException' occurred in mscorlib.dll
Additional information: The value for an unsigned byte was too large or too small.
地址的类型是 4 Bytes。我要发布的值是:prestigeValue = 1,experience = 1500000,winrate = 100,losrate=50
有谁知道我怎样才能让它工作?
【问题讨论】:
-
异常来自
byte.Parse(),因此prestigeValue、experience、winrate或loserate中的一个(或多个)的值小于0或大于255如here所示。您可能对每个字节位置实际存储了哪些值存在误解。 -
数值如下:prestigeValue = 1, experience = 1500000, winrate = 100, lostrate= 50
-
一个字节不能容纳 150,000 的值。是什么让您认为
experience值是从该 1 字节内存位置读取的?如果您认为该值确实保存在该字节中是正确的,那么我的第一个猜测是他们取该值并在显示之前将其乘以 10,000,例如,该值实际上可能是 150 作为一个字节,但在显示时显示为 150,000 .