测试设备大小端

        第一种方法:利用共用体测试设备大小端

        首先了解共用体,共用体又称联合体,内部成员共用同一块空间,以最大成员来开辟空间,例如:

                                union inf{
                                        char a;
                                        int b;
                                 };//4字节

        然后设备大小端是什么意思呢?
        不同平台或设备进行网路数据传输的时候可能会遇到数据存储顺序不同,实际生活中,右边数据为低位,左边为高位,存储中,地址顺序低到高

        小端存储:低位地址存储低位数据

        大端存储:低位地址存储高位数据

        标准解释:

        大端字节序存储:把一个数据的高位字节序的内容存放在低地址处,把低位字节序的内容放在高位地址处,就是大端字节序存储;

        小端字节序存储:把一个数据的高位字节序的内容存放在高地址处,把低位字节序的内容放在低地址处,就是小端字节序存储;

        有了这些知识我们就可以利用共用体测试设备大小端了,具体怎么做呢,如下所示:

        #include <stdio.h>

        int main()

        {

                union info{

                        char c;

                        int a;

                }n;

                n.a = 97;

                if(n.c == 'a')//如果相等,则是低位地址存低位数据,可判断为小端

                {

                        printf("设备是小端\n");

                }

                else//如果不相等,则是低位地址存高位数据,则可判断为大端

                {

                        printf("设备是大端\n");

                }

                return 0;

        }

  第二种方法:利用强制类型转换测试设备大小端

        #include <stdio.h>

        int check_sys(void)
        {
            int a = 1;
            if(*(char*)&a == 1)
//指针类型不同决定了它的访问权限,char*类型的指针,

                //解地址只能访问地址后一个字节单位的空间
            {
                return 1;
            }
            else
            {
                return 0;
            }
        }
        int main()
        {
            int ret = check_sys();//调用定义的判断大小段的函数
            if(ret == 1)
            {
                printf("小端\n");
            }
            else
            {
                printf("大端\n");
            }
            return 0;
        }

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱编程的程宏飞

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

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

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

打赏作者

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

抵扣说明:

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

余额充值