0


十.C++网络安全学院之字符内存中的储存方式

不同的数据在内存中的存放方式是不同的

我们说内存中每一位只存放了0和1,用来表示整数很容易,那怎么表示小数怎么表示?文字符号呢?这就需要不同的存放方式,用正确的方式也就是数据类型读取数据才能得到正确的值。

例如小数型的1.23,如果我们用整数的形式去读取他就不是1.23了。

如下图:

你可以猜结果会是1,毕竟1.23小数 硬转成整数的话,应该是1。

但是这和我们现实生活中是不一样的,内存中存放不同类型的数据储存方式是不同的,比如小数点,负数这些东西他是没有办法直接存放的,要有一个另外的规则。

(在我们以后逆向工具搜索数据的时候,首先要注意的也是他的数据类型)

字符的储存方式

char字符型,一个字节宽度

如果说 char a=65; 和 char a='A'; 两句代码是相同的你相信吗?

看下例子:

为什么呢?

这就是编码,用一字节可以表示256个符号,一字节范围 0-255。

但是一般用不到, 128个符号足够了,我们键盘才几十个符号。

这就是ASCII编码 也就是文字符号的储存方式。

可是中文不像英文那样几十个符号就可以表示,中文汉字有几万个,那么我们就需要复杂的编码表。

是这样设计的 ,把127个符号以后的符号用作表示汉字的一半前127保留原来的含义,这样2字节表示一个汉字,就有了万种左右的组合。

但是这只是基本的情况够用 ,还是不能表示全部的汉字,那么就又有了GBK GB18030 等等的拓展

以及其他的编码。

例如unicode utf-8 等编码,当然其他地区也可以有自己的编码。

一般如果外服软件和游戏我们出现乱码,往往原因不是这三种编码 ,我们的系统里没有字库。

例子台湾big5。

视频链接:

十.字符内存中的储存方式-CSDN直播

交流群:833075627


本文转载自: https://blog.csdn.net/qq_43355637/article/details/121422087
版权归原作者 任鸟飞逆向~ 所有, 如有侵权,请联系我们删除。

“十.C++网络安全学院之字符内存中的储存方式”的评论:

还没有评论