C语言判断系统数据大/小端存储方式

小端存储:数据的低位部分,存储于存储器的低地址空间里。

大端存储:数据的低位部分,存储于存储器的高地址空间里。

首先,一般PC数据存储方式是小端存储。

基本实现思想是:将存储器中所存的数据按字节以地址顺序输出,与存入数据的高低位进行比较,即得出结论。

实现方法一:


 1 #include <stdio.h>
2 int main(void)
3 {
4 short int x;
5 char *arr;
6
7 x = 0x1122;
8 arr = (char *)&x;
9
10 if(arr[0]==0x22)
11 printf("The compute is little-endian.\n");
12 else if(arr[0]==0x22)
13 printf("The compute is big-endian.\n");
14 getchar();
15 return 0;
16 }

实现方法二:


 1 #include <stdio.h>
2
3 union data
4 {
5 int inter;
6 char ch;
7 };
8
9 int main(void)
10 {
11 union data c;
12 c.inter = 1;
13 if(c.ch == 1)
14 printf("The compute is little-endian.\n");
15 else
16 printf("The compute is big-endian,\n");
17
18 getchar();
19 return 0;
20 }

C语言判断系统数据大/小端存储方式,布布扣,bubuko.com

时间: 2024-10-25 00:36:21

C语言判断系统数据大/小端存储方式的相关文章

判断CPU 是小端存储(Little endian)还是大端存储(Big endian)模式

第一个版本: //return true in big-endian machines bool check_big_endian1() { int a = 0; int *p = &a; *(char *)p = 1; return a != 1; } 采用union的第二个版本: //return true in big-endian machines bool check_big_endian2() { union{ int a; char b; }var;//sizeof(var)=4

【c语言】小端存储的举例及联合的应用

// 小端存储的举例及联合的应用 // 小端存储即低位存在低地址处,内存里即3839 // 以short的k读出来即3839 #include <stdio.h> int main() { union { short k; char i[2]; }*s, a; s = &a; s->i[0] = 0x39; s->i[1] = 0x38; printf("%x\n", a.k); return 0; } <img src="http://

【c语言】验证计算机是大端存储还是小端存储

// 验证计算机是大端存储还是小端存储 #include <stdio.h> int main() { int a = 1; char *p; p = (char *)(&a); if(*p == 0 ) printf("当前计算机是大端存储\n"); else printf("当前计算机是小端存储\n"); return 0; } //也可以用联合实现 #include <stdio.h> union UN { int a; cha

【总结】大端、小端存储模式的那点事

----------------------------------------------------------------------------------------------------- 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放: 小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权

测试计算机是小端存储还是大端存储

    一.理解大端存储和小端存储的概念     1).大端存储:大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放.                 2).小端存储:小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致.        

20160403_联合体的本质和使用 &amp; 与struct的不同 &amp; 大端存储和小端存储

/************* 联合体的本质和使用 及 与struct的不同 及 大端存储和小端存储 ************ “联合体”(union)与“结构体”(struct)有一些相似之处.但两者有本质上的不同. [相似] union,中文名“联合体.共用体”,在某种程度上类似结构体struct的一种数据结构,共用体(union)和结构体(struct)同样可以包含很多种数据类型和变量. [不同] 在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和.而在“联合”中,各

Python struct与小端存储

参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017685387246080 在使用Python 实现字符向字节数据类型转换的时候,Python没有提供专门处理字节的数据类型,不过Python提供了一个Struct模块提供bytes和其他二进制数据类型的转换 pack(),将任意数据类型转变为bytes数据类型 >>> import struct >>> struct.pack('>I', 1024

大端和小端存储

小端存储法——高地址存高字节,低地址存低字节(高存高,低存低)(intel/ARM) 0x表示十六进制 数值:0x12 34 56 78在小端存储器里如何存储 0x8003 0x12 0x8002 0x34 0x8001 0x56 0x8000  0x78 1 BYTE = 8bit 大端存储法——高地址存低字节,低地址存高字节(高存低,低存高)(IBM大型机/网络字节序) 数值:0x12 34 56 78在小端存储器里如何存储 0x8003 0x78 0x8002 0x56 0x8001 0x

小端存储(little Endian)大端存储(big Endian)

小端存储--低内存低字节 87654321 字节或半字节的最低位字节(Lowest Significant Bit,LSB)存放于内存最低位字节地址上.即最低地址存放的最低字节,为Power PC,Intel x86 系列等采用. int a=0x12345678; 78为低字节 12为高字节 void fFun() { int a=0x12345678; char *p=(char *)&a; printf("0x%02X\n",*(++p)); } 0x56 大端存储(bi