繁体   English   中英

C# 和十六进制偏移范围

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM