(原创)确认大端模式或小端模式(最直接有效的方法)
预备课:深刻理解大端模式与小端模式的概念。
大端模式(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:
除了以上方法外,当然我们可不不利用函数来判定,直接看内存即可,在此就不介绍了。
作者:tdyizhen1314
(现从事LED行业,专注于户外大型LED显示屏控制系统的研发,希望与大家一起交流,共同进步)
邮箱: 495567585@qq.com
posted on 2012-08-07 07:20 tdyizhen1314 阅读(793) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具