看到有的资料说数据类型占用的内存大小跟操作系统有关,或者跟编译器有关,对于这方面,我也未研究的很深入,只说说我个人的理解

要修改数据

修改某一游戏的玩家背包图鉴开启状态和宠物的三围

准备软件

安卓模拟器搭载Android 4.x的系统 ,内存修改器(烧饼或八门)

内存修改器

image

修改操作

使用烧饼修改器搜索 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位的由来。

 

附:C#数据类型占用内存大小

image

版权声明:本文为zhaoqingqing原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zhaoqingqing/p/4288653.html