admin管理员组

文章数量:1794759

C语言—大小字节序和字节序判断

1. 什么是大小端?

超过一个字节的数据在内存中存储时,就有存储顺序的问题,按照不同的存储顺序分为大端字节序存储和小端字节序存储。 大端(存储)模式: 是指数据的低位存储在高地址处,高位存低地址处. 小端(存储)模式: 是指数据的低位存低地址处,高位存高地址处.

高低位的区分: 比如123中的3就为最低位,1为最高位. 16进制的0x11223344中44就是最低位.

2. VS中的存储模式

代码语言:javascript代码运行次数:0运行复制
int main()
{
  	int n = 0x11223344;
  	
	return 0;
}

调试这行代码:

由图中可以看出VS是小端字节序存储

3.设计一段代码判断当前机器的字节序

代码语言:javascript代码运行次数:0运行复制
#include<stdio.h>
int main()
{
	int n = 1;  //n的16进制表示形式为0x00000001
	            //如果是大端存储就为 00 00 00 01
	            //如果是小端存储就为 01 00 00 00
	            //只拿一个字节,大端存放拿的就是00  小端存放拿的就是01
	if(*(char*)&n == 1)  //将n强制类型转换为char*类型,每次只访问一个字节,再解引用.
	                    //注意:将n直接强转为char类型是不行的,因为强制类型转化位char拿的总是最低位的一个字节.
		printf("小端");
	else
	    printf("大端");	
	return 0;
}

用函数方式实现

代码语言:javascript代码运行次数:0运行复制
#include<stdio.h>
check_sys()
{
	int n = 1;
	  return *(char*)&n;    //*(char*)&n这个表达式的结果无非就是0或1,所以直接返回*(char*)&n就行.
}
int main()
{
 int ret = check_sys();
 if(ret == 1 )
	printf("小端");
 else
    printf("大端");
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-03-17,如有侵权请联系 cloudcommunity@tencent 删除调试存储函数设计数据

本文标签: C语言大小字节序和字节序判断