zoukankan      html  css  js  c++  java
  • 从游戏开挂谈谈数据类型

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

    要修改数据

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

    准备软件

    安卓模拟器搭载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

  • 相关阅读:
    索引!
    事件event
    Erlang运行时源码分析之——线程进度机制
    Erlang 运行时中使用的读写锁解析
    经典互斥算法解析
    网格布局之grid
    注册简单表单
    前端入门之自我介绍
    Python之一后置固件yield和终结函数addfinalizer
    python中yield 与 return 区别
  • 原文地址:https://www.cnblogs.com/zhaoqingqing/p/4288653.html
Copyright © 2011-2022 走看看