【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://img.blog.csdn.net/20150508165831368?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

时间: 2024-10-07 16:21:26

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

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 i

【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

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

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

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

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

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

判断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

小端存储(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

大端和小端存储

小端存储法——高地址存高字节,低地址存低字节(高存高,低存低)(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