从游戏开挂谈谈数据类型
本文为作者原创,转载请注明出处:https://www.cnblogs.com/zhaoqingqing/p/4288653.html
看到有的资料说数据类型占用的内存大小跟操作系统有关,或者跟编译器有关,对于这方面,我也未研究的很深入,只说说我个人的理解
要修改数据#
修改某一游戏的玩家背包图鉴开启状态和宠物的三围
准备软件#
安卓模拟器搭载Android 4.x的系统 ,内存修改器(烧饼或八门)
内存修改器#
修改操作#
使用烧饼修改器搜索 1920 的截图如上,可以看到1个DWBF就是一个int32 ,每个DBWF下有4个东西
字节分析#
Android系统是32位,游戏的开发语言是C++,所以可知刚刚搜索的就是一个C++中的一个int,占四字节
字节知识#
下面再记录一下基础知识
int32占4字节,每个字节占8位#
计算机中,以位(0 或 1)表示数据。数据的最小的寻址单位称为字节(通常是八位)。
机器码指令处理的单位,称作字长。大部分对字长的指令解译,主要以二进制为主,如一个 32 位的字长,可以表示从0至2的32次方减1的无符号整数值,或者表示从负的2的32次方至2的32次方减1的有符号整数值。存在着特殊的算术指令,对字长中的位使用不同的解释,以此作为浮点数。
数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。 例如大胖子必须睡双人床,就给他双人床,瘦的人单人床就够了。
为什么1字节等于八位?#
首先说一下二进制,二进制只有两个数字构成,就是0和1,因为是逢二进一,所以称为二进制。在计算机中八个0和1可以表示一个英文字母,比如01001100,称为8位二进制数。我们将这样的8位二进制数称为一个字节,也就是说一个字节可以表示一个英文字母。
字节的由来#
所谓字节,原意就是用来表示一个完整的字符的。
最初的计算机性能和存储容量都比较差,所以普遍采用4位BCD编码(这个编码出现比计算机还早,最早是用在打孔卡上的)。BCD编码表示数字还可以,但表示字母或符号就很不好用,需要用多个编码来表示。后来又演变出6位的BCD编码(BCDIC),以及至今仍在广泛使用的7位ASCII编码。不过最终决定字节大小的,是大名鼎鼎的System/360。当时IBM为System/360设计了一套8位EBCDIC编码,涵盖了数字、大小写字母和大部分常用符号,同时又兼容广泛用于打孔卡的6位BCDIC编码。System/360很成功,也奠定了字符存储单位采用8位长度的基础,这就是1字节=8位的由来。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 易语言 —— 开山篇
· Trae初体验