如何测试大端存储和小端存储
/*1. 利用不同的数据类型占用空间不一样测试*/
#include <stdio.h>
int main()
{
short int x;
char x1,x2;
x = 0x1122;
x1 = ((char *)&x)[0]; //低地址
x2 = ((char *)&x)[1]; //高地址
printf("x1=%x\n",x1);
printf("x2=%x\n",x2);
return 0;
}
//
/*2.***************************************/
typedef unsigned char BYTE;
int main(int argc, char* argv[])
{
unsigned int num,*p;
p = #
num = 0;
*(BYTE *)p = 0xff;
if(num == 0xff)
{
printf("The endian of cpu is little\n");
}
else //num == 0xff000000
{
printf("The endian of cpu is big\n");
}
return 0;
}
/*3.*****************************************/
/*利用指针取值时不同类型读取字节数不一样*/
#include<stdio.h>
int main()
{
int x = 1;
char *p = (char *)&x;
if(*p)
{
printf("little\n");
}
else
{
printf("large\n");
}
return 0;
}
/*4.*****************************************/
/*利用union*/
int checkCPU()
{
{
union w
{
int a;
char b;
} c;
c.a = 1;
return (c.b == 1);
}
}
/*5.*******************************************/
/*神级代码kernel/arch/arm/kernel/setup.c */
/*
static union {char c[4]; unsigned long mylong;}
endian_test={{'l', '?','?','b'}};
#define ENDIANNESS ((char)endian_test.mylong);
*/
static union
{
char c[4];
unsigned long mylong;
} endian_test = {{ 'l', '?', '?', 'b' } };
#define ENDIANNESS ((char)endian_test.mylong);
Linux 的内核作者们仅仅用一个union 变量和一个简单的宏定义就实现了一大段代码同样的功能!由以上一段代码我们可以深刻领会到Linux 源代码的精妙之处!(如果ENDIANNESS=’l’表示系统为little endian,
为’b’表示big endian )
如何测试大端存储和小端存储相关推荐
- C语言--测试电脑存储模式(大端存储OR小端存储)
相信大家都知道大端存储和小端存储的概念,这在平时,我们一般不用考虑,但是,在某些场合,这些概念就显得很重要,比如,在 Socket 通信时,我们的电脑是小端存储模式,可是传送数据或者消息给对方电脑时, ...
- ARM9的存储结构~~大端存储和小端存储
众所周知ARM9的每个地址对应的是一个存储字节而不是一个存储字,但ARM9可以访问存储字,访问存储字时,其地址应该是字对准,即字地址可以被四整除,也就是说,若第1个字在存储空间中是第0个地址对应单元( ...
- C语言-大端存储和小端存储
一. 简介 我们知道,一般内存的最小地址单位为字节.如下图,一个int型的变量是4个字节,我们用2个十六进制数表示1个字节,int型变量需要用到8个十六进制数表示. 大端(存储)模式:数据的低位保存在 ...
- 写一个程序判断机器是大端存储还是小端存储
0x11223344 大端:11 22 33 44 小端:44 33 22 11 #include<iostream>using namespace std;int ma ...
- c语言 int大端转小端,C++将整型数据转换成大端或小端存储顺序
昨晚帮导师从指令中恢复图像的时候,导师要我转换成raw格式,也就是记录图像像素的二进制序列,然后反复强调让我注意大端小端.当时我也没在意,用ofstream的write方法一个个地写进去,发现有部分数 ...
- C语言中低位存放,C语言 大端小端存储解析以及判断方法
当我们在C语言中查看数据在内存中的存储时,我们经常会发现一个很奇怪的现象,什么现象呢? 例如下面这段代码 int main() { int i = 1; return 0; } 数据在内存中的存放方式 ...
- C语言程序设计 | 大端小端存储解析以及判断方法
当我们在C语言中查看数据在内存中的存储时,我们经常会发现一个很奇怪的现象,什么现象呢? 例如下面这段代码 int main() {int i = 1;return 0; } 数据在内存中的存放方式似乎 ...
- 数据的存储,大端存储和小端小端存储
在数据的存储中,有两种存储形式,大端存储和小端存储. 所有的数据都是在内存当中存的,而内存当中的基本单位是字节. 数据访存的基本单位是字节的话,那么一个整形变量(int)就有四个字节,那么就意味着数据 ...
- 大端小端存储模式详解及判断方法
文章目录 大小端模式的概念 两种模式出现原因 两种模式的优劣 大小端的应用情景 判断机器的字节序 大小端模式的概念 当我们查看数据在内存中的存储情况时,我们经常会发现一个很奇怪的现象,什么现象呢? i ...
最新文章
- 搭建本地YUM源服务器
- java手机界面太小_手机端页面在项目中遇到的一些问题及解决办法
- matlab程序崩溃怎么解决,java – 如何避免MATLAB崩溃打开太多的数字?
- nodejs path.parse()
- XGBoost算法的相关知识
- art-template入门(一)之介绍
- 2020蓝桥杯省赛---java---B---6(成绩分析)
- 关于GCC的理解——On the understanding of the GCC
- 苹果mac屏幕录像软件:ScreenFlow
- hdu1233 还是畅通工程 基础最小生成树
- Windows XP 禁用屏幕保护功能
- js之dialogArguments
- excel 制作二维码
- android专业拍照软件,安卓最专业的拍照软件排行榜 优质滤镜相机软件推荐
- mysql timestamp毫秒_MySQL的Timestamp插入丢失毫秒的问题
- 定点 浮点 神经网络 量化_定点量化
- 关于如何处理MyEclipse中struts2与Hiber 3中antlr-2.7.2.jar与antlr-2.7.6包冲突的问题
- Lucky Kat LAND — NFT 系列发售
- DeepTraLog: Trace-Log Combined Microservice AnomalyDetection through Graph-based Deep Learning
- 更换固态硬盘(不重装系统)(3)