FC游戏修改ROM 用什么修改器!!
2013-08-17
展开全部
游戏存档文件大多使用二进制格式,这样对于读取和保存数据都比较方便。可使用Windows的“计算器” 来看看10进制和16进制的区别:采用“科学性”模式,在10进制模式下输入数据,然后切换到16进制就行了。
不过就算这样转换,看起来还是不很直观,因为在游戏存档中并不是如此显示的。
那么用C++如何表达的呢?下面这个小程序演示了如何读写二进制整数。
#include <iostream>
#include <fstream>
using namespace std;//标准库所在的空间
int main()
{
fstream BinFile("test.txt",ios::in | ios::out | ios::binary);//读+写+二进制模式
int i=1234;
BinFile.write(reinterpret_cast<const char*>(&i),sizeof(int));
//reinterpret_cast是C++的强制转换,这里把整数的地址强制转换为const char*,
//与C 的(const char*)&i 作用相同,但是reinterpret_cast更加含义明确。
i=0;
BinFile.seekg(0,ios::beg);//重新指向文件开头准备读取
BinFile.read(reinterpret_cast<char*>(&i),sizeof(int));
cout<<"i="<<i<<’\n’;
}
用UE打开test.txt切换到二进制模式,是这样子的:
在计算器中看到的是04D2,在UE 中看到的是D204,这就是笔者所谓的不直观性。因此,如果你要在某个游戏存档文件中间(扩充开来就是二进制文件)寻找04D2这个数值,找到上图显示的地方就对了。笔者初期手工修改存档也是这样的,比较麻烦。
下面这个小程序表明了模拟UE在二进制文件中寻
找整数的原理:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream BinFile("test.txt",ios::in | ios::out | ios::binary);//读+写+二进制模式
const int i=87654;
BinFile.write(reinterpret_cast<const char*>(&i),
sizeof(int));//强制转换,把i用二进制方式写入文件
BinFile.seekg(0,ios::beg);
//重新指向文件开头,准备读取
char ch;
while(BinFile.read(&ch,sizeof(char)))//读取所有字符
cout<<static_cast<int>(ch)<<"\t";//显示
//static_cast是C++的静态转换,与C的(int)ch作用相
//同,但是static_cast意思表达更清楚。
cout<<’\n’;
//下面把i的地址转换为字符串地址,并用char方式依次读取,主要是比较两者读取的结果是否相同.
const char* P=reinterpret_cast<const char*>(&i);
for(int i=0;i<sizeof(int);++i)
cout<<static_cast<int>(P[i])<<"\t";
不过就算这样转换,看起来还是不很直观,因为在游戏存档中并不是如此显示的。
那么用C++如何表达的呢?下面这个小程序演示了如何读写二进制整数。
#include <iostream>
#include <fstream>
using namespace std;//标准库所在的空间
int main()
{
fstream BinFile("test.txt",ios::in | ios::out | ios::binary);//读+写+二进制模式
int i=1234;
BinFile.write(reinterpret_cast<const char*>(&i),sizeof(int));
//reinterpret_cast是C++的强制转换,这里把整数的地址强制转换为const char*,
//与C 的(const char*)&i 作用相同,但是reinterpret_cast更加含义明确。
i=0;
BinFile.seekg(0,ios::beg);//重新指向文件开头准备读取
BinFile.read(reinterpret_cast<char*>(&i),sizeof(int));
cout<<"i="<<i<<’\n’;
}
用UE打开test.txt切换到二进制模式,是这样子的:
在计算器中看到的是04D2,在UE 中看到的是D204,这就是笔者所谓的不直观性。因此,如果你要在某个游戏存档文件中间(扩充开来就是二进制文件)寻找04D2这个数值,找到上图显示的地方就对了。笔者初期手工修改存档也是这样的,比较麻烦。
下面这个小程序表明了模拟UE在二进制文件中寻
找整数的原理:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream BinFile("test.txt",ios::in | ios::out | ios::binary);//读+写+二进制模式
const int i=87654;
BinFile.write(reinterpret_cast<const char*>(&i),
sizeof(int));//强制转换,把i用二进制方式写入文件
BinFile.seekg(0,ios::beg);
//重新指向文件开头,准备读取
char ch;
while(BinFile.read(&ch,sizeof(char)))//读取所有字符
cout<<static_cast<int>(ch)<<"\t";//显示
//static_cast是C++的静态转换,与C的(int)ch作用相
//同,但是static_cast意思表达更清楚。
cout<<’\n’;
//下面把i的地址转换为字符串地址,并用char方式依次读取,主要是比较两者读取的结果是否相同.
const char* P=reinterpret_cast<const char*>(&i);
for(int i=0;i<sizeof(int);++i)
cout<<static_cast<int>(P[i])<<"\t";
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
AiPPT
2024-09-19 广告
2024-09-19 广告
AiPPT软件是一款由北京饼干科技有限公司开发的智能PPT生成工具,用户可通过官方渠道下载。该软件基于人工智能大模型和自然语言处理技术,支持一键生成高质量PPT,提供丰富的模板和素材选择,满足不同场景需求。用户只需输入主题或文档资料,即可快...
点击进入详情页
本回答由AiPPT提供
2013-08-17
展开全部
去百度查看 游戏修改ROM 用什么修改器
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-17
展开全部
说得来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询