Unix网络编程第三章——确定主机的字节序

UNIX网络编程(卷一:套接字)

第三章——确定主机字节序的程序

/*这个函数是用来判断电脑是以大端还是以小端的方式存储的
 *主要掌握的应该是这个函数的思想,即利用union这个特殊的结构体,通过short存储两个字节的数字来确认程序是大端还是小端
 * 
 */

#include "unp.h"

int main(int argc,char **argv)
{
        //union中所有成员引用的是内存中的相同位置
        union{
                short s;//short 2个字节
                char c[sizeof(short)];//c 1个字节
        } un;

        un.s=0x102;//转换为二进制的结构为000000001 00000010 ,因为按字节存储,所以存储的数字为1和2

        printf("%s:\n",CPU_VENDOR_OS);//应该是看电脑的系统是什么

        printf("c[0]的地址:%d\n",&un.c[0]);
        printf("c[1]的地址:%d\n",&un.c[1]);

        //如果s是两个字节
        if(sizeof(short)==2){
                //低序字节为2,高序字节为1,低序字节存储在起始地址,为小端
                //因为栈是往下增长的,所以低序字节在
                if(un.c[0]==1&&un.c[1]==2){
                        printf("这是大端存储方式\n");
                }else if(un.c[0]==2&&un.c[1]==1){
                        printf("这是小端存储方式\n");
                }else {
                        printf("unknown\n");
                }
        }else{

                printf("sizeof(short) =%d\n",sizeof(short));
        }

        return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值