大小端存储问题
来源:互联网 发布:阿里云个人免费套餐 编辑:程序博客网 时间:2024/05/18 10:27
在生活中我们会遇到很多大小端的问题,别看这是小小的问题有时候却能把我们摔一个跟头。
大端存储:高位存在低地址,低位存在高地址,高位先存。
小端存储:高位存在高地址,低位存在低地址,低位先存。
举个栗子说明一下:
内存从0X0000开始有以下的数据
0x0000 0x12
0x0001 0x34
0x0002 0xab
0x0003 0xcd
如果我们读取一个地址为0x0000的的四个字节的变量:
大端读取为:0x1234abcd
小端读取为:0xcdab3412
我们将0x1234abcd写到0x00000开始的内存中结果是:
1、用指针区分大小端
void judge_endian(){ int a = 1; //定义1是为了方便,数字可以任意选 char* p = (char*)&a; //将整型a的地址转换成char*,方便下面取一个字节内容 if(*p == 1) //对取得地址进行解引用然后与1进行比较 printf("小端\n"); else printf("大端\n");}
简单图示: int类型占4个字节,如下图方式存储
2、利用联合体解决
联合体的各个成员共用同一内存,应该同时只有一个成员得到这块内存的使用权,而各个结构体成员各自拥有内存,相互之间不干涉。
#include<stdio.h> #include<stdlib.h> void Judge_endian(void) { union t { int i; char c; } t1; t1.i = 1; if(t1.c == 1) printf("小端\n"); else printf("大端\n"); } int main() { Judge_endian(); system("pause"); return 0; }
0 0
- 存储大小端问题
- 大小端存储问题
- 大小端存储问题
- 存储大小端问题
- 大小端存储问题
- 大小端存储的问题
- 存储的大小端问题
- 机器大小端存储问题
- 关于计算机中的大小端存储问题
- 关于大小端存储的问题
- 计算机大小端存储问题详解
- 数据存储的大小端问题
- 关于大小端存储方式问题的思考
- 关于C51中“大小端存储”问题的详解
- 内存的字节存储大小端问题(一)
- 内存的字节存储大小端问题(二)
- 关于C51中“大小端存储”问题的详解
- 大小端存储模式
- Linux命令之exit介绍
- cglib 动态代理
- CSS background-position 背景定位的用法
- html表格中的tr td th用法
- Caffe编译过程
- 大小端存储问题
- Servlet 生命周期
- 个人笔记整理-java设计模式之策略模式
- 在Eclipse中使用JUnit4进行单元测试(初级篇)
- 在Eclipse中使用JUnit4进行单元测试(中级篇)
- Java中的深拷贝与浅拷贝
- 可变参数列表 va_list
- Qt,QtCreator资源下载地址
- Linux学习篇第二章之~unit6 文本处理工具