小端: 低地址存放低位字节。(x86是小端模式)
大端: 低地址存放高位字节。(非x86是大端模式)
例1:看下面的几个字段
void testEndianMem(){
char a[] = {0x12,0x34};
short b = 0x5678;
int c = 0x1a2b3c4d;
}
栈的按照地址的反方向增长,故存放到内存的情况应该是: 先存a,再存b,再存c。 因此c的地址最小,其次是b,其次是a。
内存中的情况如下图所示:
单独看a,因为存放的类型是字节长度,故按照地址增长方向存放的是12,34。
在看b,b是两字节的类型,x86是小端,所以低地址存放最低字节,应该存放78,然后再存放56。
在看a,a是一个四字节的类型,x86是小端,所以低地址存放低字节,就应该先存放4d,然后接下来是3c,2b,1a。
例2: 我们已经知道各种长度类型的字段如果存到内存中了。
下面的例子看如果已经知道了内存中的内容。那么对于不同类型的指针,它是如何解释并输出的?
void testEndian(){
char array[12] = {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
short *pshort = (short *)array;
int *pint = (int *)array;
printf("%x\n",*(pshort+1)); //0x0403
printf("%x\n",*(pint+1)); //0x08070605
}
很明显,我们已经可以知道对于array数组来说,因为都是字节类型,所以在内存中的存放顺序严格按照这里的顺序递增,即和地址增长方向保持一致。
那么这几个print语句会打印什么呢?
对于第一个打印语句,我们的指针是short型的,所以编译器认为我们存放的都是short值,会按照short的存储方式来解析。首先指针+1,走到03开始的位置,然后因为是小端,所以认为高字节在高地址处,低字节在低地址处,所以输出0x0403。(04是高字节,在高地址处,03是低字节,在低地址处)。
同理可以知道int类型的指针解释出来就是0x08070605。
分享到:
相关推荐
主机字节序是自己的主机内部,内存中数据的处理方式,要么是大端,要么是小端,取决于处理器类型和操作系统类型,和编程语言无关,如何判断主机的主机字节序是大端还是小端,请参见网络编程:主机字节序和网络...
网络编程: 目的:实现不同主机之间的进程间通信 协议:计算机之间交流的规则 TCP/IP:一组协议 TCP:传输协议 IP:网络协议 相关知识: 1、socket ...网络字节序:解决不同cpu架构主机之间通信的问题
F2806x Piccolo 系列微控制器为 C28x...),浮点单元,可编程平行加速器 (CLA),Viterbi、复杂算术、循环冗余校验 (CRC) 单元 (VCU),嵌入式存储器,6 通道 DMA低器件和系统成本,字节序:小端序,计时,可支持
node-red-contrib-os 节点,用于获取 CPU 系统信息。 这些节点利用来获取与操作系统相关的基本实用功能。... 返回CPU的字节序。 可能的值是大端的“BE”或小端的“LE”。 返回操作系统的默认临时文件目录。 驱
V1.22相对上一版本,修复MIPS小端字节序反汇编错误,网上最新版本提示;V1.21相对上一版本,菜单调整,完善64位ELF文件解析,解析调试信息;另部分增强功能的菜单操作设有密码,如有兴趣欢迎咨询。欢迎大家反馈相关...
V1.22相对上一版本,修复MIPS小端字节序反汇编错误,网上最新版本提示;V1.21相对上一版本,菜单调整,完善64位ELF文件解析,解析调试信息;另部分增强功能的菜单操作设有密码,如有兴趣欢迎咨询。欢迎大家反馈相关...
V1.22相对上一版本,修复MIPS小端字节序反汇编错误,网上最新版本提示;V1.21相对上一版本,菜单调整,完善64位ELF文件解析,解析调试信息;另部分增强功能的菜单操作设有密码,如有兴趣欢迎咨询QQ2016508061。欢迎...
V1.22相对上一版本,修复MIPS小端字节序反汇编错误,网上最新版本提示;V1.21相对上一版本,菜单调整,完善64位ELF文件解析,解析调试信息;另部分增强功能的菜单操作设有密码,如有兴趣欢迎咨询QQ2016508061。欢迎...
数值在内存中存储的方式有两种,一种是大尾字节序,另一种是小尾,比如0x01020304这样一个数值,如果用大尾方式存储,其存储方式为01 02 03 04而用小尾方式存储则是04 03 02 01,一般Windows操作系统兼容的CPU为小尾方式,...
V1.22相对上一版本,修复MIPS小端字节序反汇编错误,网上最新版本提示;V1.21相对上一版本,菜单调整,完善64位ELF文件解析,解析调试信息;另部分增强功能的菜单操作设有密码,如有兴趣欢迎咨询QQ2016508061。欢迎...
0.19 什么是大端字节序、小端字节序 19 0.20 BIOS中断、DOS中断、Linux中断的 区别 21 0.21 Section和Segment的区别 25 0.22 什么是魔数 29 0.23 操作系统是如何识别文件系统的 30 0.24 如何控制CPU的下一条指令 30 ...
V1.22相对上一版本,修复MIPS小端字节序反汇编错误,网上最新版本提示;V1.21相对上一版本,菜单调整,完善64位ELF文件解析,解析调试信息;另部分增强功能的菜单操作设有密码,如有兴趣欢迎咨询QQ2016508061。欢迎...
V1.22相对上一版本,修复MIPS小端字节序反汇编错误,网上最新版本提示;V1.21相对上一版本,菜单调整,完善64位ELF文件解析,解析调试信息;另部分增强功能的菜单操作设有密码,如有兴趣欢迎咨询QQ2016508061。欢迎...
V1.22相对上一版本,修复MIPS小端字节序反汇编错误,网上最新版本提示;V1.21相对上一版本,菜单调整,完善64位ELF文件解析,解析调试信息;另部分增强功能的菜单操作设有密码,如有兴趣欢迎咨询。欢迎大家反馈相关...
V1.22相对上一版本,修复MIPS小端字节序反汇编错误,网上最新版本提示;V1.21相对上一版本,菜单调整,完善64位ELF文件解析,解析调试信息;另部分增强功能的菜单操作设有密码,如有兴趣欢迎咨询。欢迎大家反馈相关...
反汇编带符号表的32位/64位ELF目标文件,CPU...V1.22相对上一版本,修复MIPS小端字节序反汇编错误,网上最新版本提示;另部分增强功能的菜单操作设有密码,如有兴趣欢迎咨询。欢迎大家反馈相关软件使用过程中的问题!
反汇编带符号表的32位/64位ELF目标文件,CPU...V1.22相对上一版本,修复MIPS小端字节序反汇编错误,网上最新版本提示;另部分增强功能的菜单操作设有密码,如有兴趣欢迎咨询。欢迎大家反馈相关软件使用过程中的问题!
反汇编带符号表的32位/64位ELF目标文件,CPU...V1.22相对上一版本,修复MIPS小端字节序反汇编错误,网上最新版本提示;另部分增强功能的菜单操作设有密码,如有兴趣欢迎咨询。欢迎大家反馈相关软件使用过程中的问题!
V1.22相对上一版本,修复MIPS小端字节序反汇编错误,网上最新版本提示;V1.21相对上一版本,菜单调整,完善64位ELF文件解析,解析调试信息;另部分增强功能的菜单操作设有密码,如有兴趣欢迎咨询。欢迎大家反馈相关...
V1.22相对上一版本,修复MIPS小端字节序反汇编错误,网上最新版本提示;V1.21相对上一版本,菜单调整,完善64位ELF文件解析,解析调试信息;另部分增强功能的菜单操作设有密码,如有兴趣欢迎咨询。欢迎大家反馈相关...