博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C/C++字节序(大端/小端)判断
阅读量:5838 次
发布时间:2019-06-18

本文共 896 字,大约阅读时间需要 2 分钟。

C/C++大端小端判断

说的是变量的高字节、低字节在内存地址中的排放顺序。

变量的高字节放到内存的低地址中(变量的低字节放到内存的高地址中)==>大端

变量的高字节放到内存的高地址中(变量的低字节放到内存的低地址中)==>小端

例如,对于int类型变量x=0x30313233,在x86下,考虑到在内存中是按照字节为单位进行数据排布,那么会把0x30,0x31,0x32,0x33这4个值按照某种顺序(大端或者小端)进行存储:从0x30到0x33依次为变量的高字节到低字节,如果是大端字节序存储,则从低内存地址到高内存地址,依次存放:0x30, 0x31, 0x32, 0x33;如果是小端字节序存储,则从低内存地址到高内存地址,依次存放:0x33, 0x32, 0x31, 0x30(用这几个蛋疼的16进制数字,是为了后续强转为char类型并打印的方便而考虑的):

img_116e836b7bb40949b8ef82a7570eed78.png

写个代码验证下:

void test_little_or_big_endian() {    int x;    cout << "sizeof(int) is " << sizeof(int) << endl;    char x0, x1, x2, x3;    x = 0x30313233;    cout << *((char*)&x) << endl;    x0 = ((char*)&x)[0];    x1 = ((char*)&x)[1];    x2 = ((char*)&x)[2];    x3 = ((char*)&x)[3];    cout << "x0=" << x0 << endl;    cout << "x1=" << x1 << endl;    cout << "x2=" << x2 << endl;    cout << "x3=" << x3 << endl;    /*    对于小端序,输出    x0=3       x1=2    x2=1    x3=0   //0x30对应到十进制的48,也即是ascii的'0',作为char类型输出显示为0    */}

转载地址:http://uvncx.baihongyu.com/

你可能感兴趣的文章
关于Cursor的moveToFirst和moveToNext的意义
查看>>
个人--工资划分5份
查看>>
有关文件下载的文件名
查看>>
史上最详细的wamp配置虚拟域名步骤
查看>>
oracle 授权
查看>>
lv扩展磁盘空间
查看>>
java8之stream流的基本操作
查看>>
二维数组计算协方差java
查看>>
SpringBoot下Redis相关配置是如何被初始化的
查看>>
为你的AliOS Things应用增加自定义cli命令
查看>>
MongoDB 创建基础索引、组合索引、唯一索引以及优化
查看>>
百度PaddlePaddle常规赛NLP赛道火热开启
查看>>
稳了!这才是cookie,session与token的真正区别
查看>>
OSChina 周二乱弹 —— 假期余额已不足!
查看>>
前端那些事之React篇--helloword
查看>>
ios的google解析XML框架GDataXML的配置及使用
查看>>
netty-当一个客户端连接到来的时候发生了什么
查看>>
PHP_5.3.20 源码编译安装PHP-FPM
查看>>
在51CTO三年年+了,你也来晒晒
查看>>
js控制图片等比例缩放
查看>>