博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【网络编程】大端模式和小端模式(大头序和小头序)
阅读量:6276 次
发布时间:2019-06-22

本文共 1062 字,大约阅读时间需要 3 分钟。

  hot3.png

大端:多字节值的大端存储在该值的起始位置;(老大站排头为大)

小端:多字节值的小端存储在该值的起始位置;(老小站排头为小)

例如16bit整数:0x0102,其中01即为多字节值的大端,02即为多字节值的小端。

在网络中传输的都是大端序,但具体到某台主机CPU的实现,则有可能是大端序也可能是小端序。一般X86是小端。

那么,如何通过程序来判断当前主机到底是大端还是小端呢?

/*判断大端还是小端, 1:小端  0:大端*/int GetEndian(){    union    {        int a;        char b;    } s;    s.a = 0x0001;    return (1 == s.b);}

联合体union的存放顺序是所有成员都从低地址开始存放,给s.a赋值为0x01,00为a的高端,01为a的低端,如果b==1,即a的低端位于起始位置,即小端,反之为大端。

 

我觉得《UNIX网络编程》(第一卷)给的例子更严密一些:

/*判断大端还是小端, 1:小端  0:大端*/int GetEndian(){    union    {        short s;        char c[sizeof(short)];    }un;    un.s = 0x0102;    if(2 == sizeof(short))    {        if(1 == un.c[0] && 2 == un.c[1])        {            printf("big-endian\n");            return 0;        }        else if(2 == un.c[0] && 1 == un.c[1])        {            printf("little-endian\n");            return 1;        }        else        {            printf("unknown\n");        }    }    else    {        printf("sizeof(short) = %d\n", sizeof(short));    }    return 0;}

2011-12-14  任洪彩 qdurenhongcai@163.com

转载于:https://my.oschina.net/renhc/blog/37130

你可能感兴趣的文章
HTML-color:rgb()-颜色渐进
查看>>
数据库实例: STOREBOOK > 表空间 > 编辑 表空间: UNDOTBS1
查看>>
Mcad学习笔记之异步编程(AsyncCallback委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结)...
查看>>
Javascript防冒泡事件与Event对象
查看>>
managed domain与unmanaged domain
查看>>
《中国人工智能学会通讯》——11.47 领域文本中的实体链接技术
查看>>
刚毕业不久,就在人工智能上做出这样大贡献
查看>>
中国人工智能学会通讯——迎接深度学习的“大”挑战(下) 1.2 深度学习的挑战和机遇...
查看>>
不可不看!即将发布的浪潮高端存储
查看>>
锐捷工程师:深夜敲击键盘的样子,很燃
查看>>
数据中心未来的商业化系统
查看>>
《算法技术手册》一2.3 最好、最坏和平均情况下的性能分析
查看>>
LTE-Hi渐行渐近 有望打破4G深度覆盖局限
查看>>
Nuance报告:医护人员如何从人工智能中受益
查看>>
JavaScript异步与Promise实现
查看>>
Android内存泄漏产生的6大原因
查看>>
F5 Networks任命Adam Judd领导亚太区销售工作 将加速区域云和安全业务发展
查看>>
将给企业带来巨大转变的八项“变革式”技术趋势
查看>>
ICML精彩论文:学界与业界联手,通过监测无线信号来判断睡眠阶段
查看>>
欧盟下周或有条件批准微软收购领英
查看>>