如何运用一个简单的C程序判断系统大小端

一、引言

        在计算机操作系统中,数据的存储方式可分为两种:大端系统与小端系统。不同数据存储系统意味着还原数据方式的不同,那么在拿到一个新系统做项目时如何确定系统的大小端问题呢?下面我们将用一个简单的C程序来实现

二、大小端定义

        1. 小端系统

        小端系统简单来说就是低 地址存储低位数据,高地址存储高位数据。如地址编号为1, 2, 3, 4;从低到高,一个地址编号可存储内容为一字节;有一个 4 字节数据0x01020304,该数据中的低位数据 04 存储在低位地址 1 中,以此存储,最后 01 存储在 4 中。

        2.大端系统

        大端系统简单来说就是低 地址存储高位数据,高地址存储低位数据。如地址编号为1, 2, 3, 4;从低到高,一个地址编号可存储内容为一字节;有一个 4 字节数据0x01020304,该数据中的低位数据 04 存储在高位地址 4 中,以此存储,最后 01 存储在 1 中。

三、C语言实现

        本次代码实现运用了“联合(union)”的数据存储知识:对于“联合”里面的所有数据公用一份地址,如:

        union data {

                int num;

                char ch;

        };

        该联合中 num 与 ch 公用一份地址,总字节为4字节,数据成员中最大字节数。而 字符 ch 默认储存位置在低地址中,那么我们只要将 ch 中的内容与 num 对比即可,如 ch 为 num 中的高位数据则“小存大”为大端系统;反之小端系统。

        判断过程实现:

        int main(int argc,const char* argv[])  {
                union Data d;
                 d.num = 0x01020304;        //16进制数,便于判断
                if(d.ch == 0x04)  {        //低地址为 num 中的地位数据
                        printf("小端");
                  }
                else  {        //低地址为 num 中的地位数据
                         printf("大端");        
                 }
                 return 0;
       }

三、结语

        在我们需要按字节方式拿取数据时,了解目标系统是大端或者小端及其重要,此时我们便可以通过以上方式判断大小端。学会了此,老板再也不用担心我数据乱序啦。         

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pamy1291

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值