`
yuanlanxiaup
  • 浏览: 857820 次
文章分类
社区版块
存档分类
最新评论

计算机字节序列问题

 
阅读更多

看到论坛有人问一道题,说是曙光面试题。

http://topic.csdn.net/u/20111210/23/73048ed6-68d6-4678-a2b4-1d21c5b62c29.html


这段代码主要的问题就是把int*转换成char*之后取到的数值。


假设目标主机是小端序列(little-endian),常用的x86,x64都是这种类型的。

那么:0x12345678在内存中存储结构应该是 0x78,0x56,0x34,0x12.

这个很容易测试的,打开调试器,打个断点看内存就知道。

这种情况下

char * p = (char*)&a; 的结果应该是0x78

char * q = p + 2;的结果应该是0x34

int x = *(int*)q;

char*转成int*,一字节变4字节。q指向数值0x34,那么如果把它转成int*,则实质上它指向0x34,0x12,0xXX,0xXX,后两个字节是什么数据,但从这个

语句上已经无从知道了。但看着一句,结果应该是0xXXXX1234。

这句话应该有很多种可能的。只讨论windows吧,别的系统怎么处理的,我不清楚。

win7 64位 +vs2010:

在debug版本中,VS会在每个数据之间填充0xCC,即int 3,这样是为了检测缓冲区溢出的。

这种情况结果应改为0xCCCC1234。

在release版本中,结果是0x24DD1234。这个结果在winxp sp3和win7 64专业上的一样的结果

vc6:

0x70001234目前感觉这个东西和编译环境关系很大,似乎没有个确定值


结论:这个程序的结果和编译器关系很大,不同的编译器会得出不同的结果。


水平有限,希望牛人指正。

分享到:
评论

相关推荐

    ML_Model_Serialization:使用pickle模块将机器学习模型序列化为字节流以实现可重用性

    Pickle允许您序列化字节流中的任何python对象,而这仅仅是计算机可以读取和理解的字节字符的有序序列。 在这种情况下,python对象可以是字典中的任何对象,类中的对象甚至是机器学习模型! 序列化训练后的模型后,...

    计算机基础关键字汇总——计算机资料文档.docx

    CAL 辅助学习、CAI辅助教学 汉字存储 2个字节 西文字符存储 1个字节 西文字符 ASCII码、EBCDIC码 汉字编码 国标码、区位码、机内码(多选) 汉字字符集 GB2312、GBK、CJK、BIG5 计算机汉字 机内码 计算机的命令 指令...

    清华大学的计算机网络课件

    问题3-11:在连续ARQ协议中,如果A向B发送数据帧而B只向A发送确认帧(即假定B没有数据帧向A发送),那么这两种帧的序号序列各有什么特点? 问题3-12:在连续ARQ协议中,如果B收到A发送的数据帧的序号没有落在B的接收...

    用java 编写的 ,编写一个计算机程序用来计算一个文件的16位效验和。最快速的方法是用一个32位的整数来存放这个和。

    若数据字节长度为奇数,则在数据尾部补一个字节的0以凑成偶数。  例子:16位效验和计算,下图表明一个小的字符串的16位效验和的计算。 为了计算效验和,发送计算机把每对字符当成16位整数处理并计算效验和。如果...

    利用Blob进行文件上传的完整步骤

    Blob对象指的是字节序列,并且具有size属性,是字节序列中的字节总数,和一个type属性,它是小写的ASCII编码的字符串表示的媒体类型字节序列。 size:以字节数返回字节序列的大小。获取时,符合要求的用户代理必须...

    计算机网络第三章课后习题.docx

    计算机网络第三章课后习题,从第二题2、数据链路层协议使用了下面的字符编码:A:01000111 B:11100011 FLAG:01111110 ESC:11100000。为了传输一个包含4个字符的帧:A B ESC FLAG,试问使用下面哪种成帧方法时所发送的...

    C++11 Memory Model.pdf

    可用于 C++ 程序的内存是一或多个相接的字节序列。内存中的每个字节拥有唯一的地址。 字节 字节是最小的可寻址内存单元。它被定义为相接的位序列,大到足以保有任何 UTF-8 编码单元( 256 个相异值)和 (C++14 起)...

    大一大学计算机基础课程知识点.doc

    控制器:主要功能是协调并控制计算机系统的各个部件按程序中安排好的指令序列执行 指定的工作,使整个计算机系统有条不紊的工作; 存储器:用于存放程序、参与运算的数据和运算结果,并能在计算机运行过程中高速、 ...

    计算机图形学作业题.doc

    计算机图形学作业题 1. 计算机中由图形的形状参数(方程或分析表达式的系数,线段的端点坐标等... 参数域中所有节点构成的序列称为 矢量。 41. 什么是参数化?什么是参数区间的规格化? 42. 什么是参数连续性? 二条曲线P

    计算机应用基础B判断题(20210414121631).docx

    错误 一个汉字在计算机种存储需要两个字节。 正确 在计算机内部,机器数的最高位为符号位,该位用1表示该数为负数。 正确 计算机的指令是一组二进制代码,是计算机可以直接执行的操作命令。 正确 判断 机器语言程序...

    计算机应用基础选择题.docx

    为解决某一个特定问题而设计的指令序列称为___D___。 A.文档B.语言C.系统D.程序 8.目前的计算机,从原理上讲__ C ____。 A.指令以二进制形式存放,数据以十进制形式存放B.指令以十进制形式存放,数据以二进制形式...

    国家计算机等级一级选择题解析

    9. 计算机程序是指令的有序序列,执行的过程实际上是执行指令的过程。 10. DOS、Windows操作系统属于单用户操作系统,在计算机系统内一次只能运行一个应用程序, 一次只能有一个用户使用。而UNIX是目前最流行的分时...

    计算校验和

    若数据字节长度为奇数,则在数据尾部补一个字节的0以凑成偶数。 例子:16位效验和计算,下图表明一个小的字符串的16位效验和的计算。  为了计算效验和,发送计算机把每对字符当成16位整数处理并计算效验和。如果...

    计算机应基础与应用复习题.doc

    计算机软件是指计算机执行各种操作的 指令序列 ,是用户与 计算机硬件 之间的接口界面,用户需要通过软件与计算机进行交流。 10.计算机软件主要分为 系统软件 和 应用软件 两大类。 11.计算机按用途可分为 、 和 ...

    东大22春《计算机应用基础》在线平时作业2-00001

    7.计算机中字节是常用单位,它的英文名字是____。8.Excel中,在工作表中用“图表向导”创建图表时,第一个对话框是让用户选择()。9.在Excel中,执行降序排列,在序列中空白单元格行被()。10.下列IP地址中,非法的IP...

    东师计算机应用基础20春在线作业2-1.docx

    内存空间地址段为3001H至7000H,则可以表示( )个字节的存储空间。 A.16KB B.4KB C.4MB D.16MB 22.主机中包括主板、多功能卡、硬盘驱动器、开关电源、扬声器、显示卡和 东师计算机应用基础20春在线作业2-1全文共12...

    《计算机应用基础》第1阶段在线作业.doc

    A) 算术计算 B) 逻辑运算 C) 算术逻辑运算 D) 算术逻辑运算及全机的控制 参考答案: D 收起解析 解析: 无 窗体底端 窗体顶端 8(2.0分) 为解决某一特定的问题而设计的指令序列称为____。 A) 文档 B) 语言 C) ...

    dill:序列化所有python

    序列化是将对象转换为字节流的过程,而相反的过程是将字节流转换回python对象层次结构。 dill为用户提供了与pickle模块相同的界面,还包括一些其他功能。 除了腌制python对象之外, dill还提供了在单个命令中保存...

    《计算机应用基础》选择题汇总.doc

    (A)扫描仪 (B)绘图仪 (C)鼠标 (D)键盘 14、人们根据特定得需要,预先为计算机编制得指令序列称为_______。 (A)程序 (B)软件 (C)文件 (D)集合 15、光盘驱动器就是一种利用_______技术存储信息得设备。 (A)激光 (B)...

Global site tag (gtag.js) - Google Analytics