确认大端模式或小端模式(最直接有效的方法)

来源:本站
导读:目前正在解读《确认大端模式或小端模式(最直接有效的方法)》的相关信息,《确认大端模式或小端模式(最直接有效的方法)》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《确认大端模式或小端模式(最直接有效的方法)》的详细说明。
简介:深刻理解大端模式与小端模式的概念,但我们如何判别当前系统为大端模式还是小端模式呢?

预备课:深刻理解大端模式与小端模式的概念。

大端模式(Big_endian):字数据的高字节存储在低地址中,而字数据的低字节存放在高地址中。

小端模式(Little_endian):字数据的高字节存储在高地址中,而字数据的低字节存放在低地址中。

例:0x12345678在内存中的存储为例:

大端模式内存布局:

| 0x78 | 0x56 | 0x34 | 0x12 |

--------------->高地址

小端模式内存布局:

| 0x12 | 0x34 | 0x56 | 0x78 |

--------------->高地址

但我们如何判别当前系统为大端模式还是小端模式呢?

方法1:

INT32U i = 0x12345678;

INT8U *p = (INT8U *)(&i);

if(p[0]==0x12)

printf("Big_endian");

else

printf("Little_endian");

注:方法1为个人觉得为最直接有效的方法,推荐!

方法2:

判别当前系统为大端模式还是小端模式有很多种方式,比如利用union型数据概念!

union型数据所占的空间等于其最大成员所占的空间,对union型成员存取都从相对于该联合体基地址的偏移量为0处开始,也就是联合体的访问对哪个变量的存取都是从union的首地址位置开始。

int checksystem(void)

{

union check{

int i;

char ch;

}c;

c.i= 1;

return (c.ch==1);

}

如果checksystem返回1则为大端模式,返回1为小端模式。

方法3:

除了以上方法外,当然我们可不不利用函数来判定,直接看内存即可,在此就不介绍了。

提醒:《确认大端模式或小端模式(最直接有效的方法)》最后刷新时间 2024-03-14 01:03:45,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《确认大端模式或小端模式(最直接有效的方法)》该内容的真实性请自行鉴别。