[英]C# and hex offset range
对不起一个新手问题。 我有一个游戏保存文件,其中包含有关游戏角色的一些信息。 我想更改一些统计数据,例如金钱或技能,我知道数据在哪里,但我不明白如何使用十六进制范围偏移。 例如,我知道技能点在 4863-4866 之间,如何正确读取和写入新值?
我在代码中的尝试:
int skill = 0;
using (BinaryReader br = new BinaryReader(File.OpenRead("Player.chr")))
{
br.BaseStream.Position = 0x12FF; // read position
label1.Text = br.ReadInt32().ToString();
}
using (BinaryWriter bw = new BinaryWriter(File.OpenWrite("Player.chr")))
{
bw.Seek(0x12FF, SeekOrigin.Begin); // go to position
bw.Write(skill + 10); // plus 10 skill points
}
如果您想增加技能的价值,请尝试正确读取变量“技能”:
int skill = 0;
using (BinaryReader br = new BinaryReader(File.OpenRead("Player.chr")))
{
bw.Seek(0x12FF, SeekOrigin.Begin);
skill = br.ReadInt32();
}
using (BinaryWriter bw = new BinaryWriter(File.OpenWrite("Player.chr")))
{
bw.Seek(0x12FF, SeekOrigin.Begin); // go to position
bw.Write(skill + 10); // plus 10 skill points
}
它的代码替换文件中的旧值“技能”。
尝试这个:
byte[] data = File.ReadAllBytes("Player.chr");
data[0x12FF] += 10;
File.WriteAllBytes("Player.chr", data);
有一个警告:这是在操作一个字节(8 位)。 如果您的目标类似于 int(16/32 位),则必须进行相应调整。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.