【网络编程】大端模式和小端模式

转载 2013年12月03日 20:48:31

这本来是很easy的东东,不过今天看到一段判断主机是大端模式还是小端模式的例子,和以前的常见的例子略有不同,更严密一些,故note一下:


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

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

例如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;
}


【转自:http://my.oschina.net/renhc/blog/37130】

【网络编程】大端小端模式及其转换

我们知道,网络字节序是TCP/IP各层协议将字节序定义为Big-Endian。 所以,网络编程注定要使用到针对字节序的小端转大端。对大端模式和小端模式的详解见:一只博客32bit宽的数0x12345...

大端模式与小端模式、网络字节顺序与主机字节顺序

 大端模式与小端模式   一、概念及详解   在各种体系的计算机中通常采用的字节存储机制主要有两种: big-endian和little-endian,即大端模式和小端模式。   先回顾两...

大端模式小端模式以及网络字节序

主机字节序有两种:大端模式和小端模式 大端模式:高字节存放在低地址,低字节存放在高地址; 小端模式:低字节存放在低地址,高字节存放在高地址; 不同的CPU有不同的主机字节序类型。 Ø  典型的...

大端模式与小端模式、网络字节顺序与主机字节顺序

http://wxxweb.blog.163.com/blog/static/135126900201022133740759/ 大端模式与小端模式 一、概念及详解   在各种体系的计算机中...

详解大端模式和小端模式

  • 2015年02月05日 10:28
  • 32KB
  • 下载

解析大端模式和小端模式

  • 2010年09月01日 10:00
  • 3KB
  • 下载

大端模式、小端模式和网络字节顺序【转】

这里转载一片文章,通过这篇文章我了解了转换成网络字节顺序的意义,以前在作TCP/IP通信的时候对于htonl()函数不是很理解,现在知道了,原来我们普通的x86体系结构都是小端模式,而网络传输要求的是...
  • shan275
  • shan275
  • 2016年05月07日 14:50
  • 493

大端模式&小端模式 主机序&网络序

1. 主机序 不同的CPU有不同的字节序类型这些字节序是指整数在内存中保存的顺序,这个叫做主机序。最常见的有两种: 1.         Little endian:将低序字节存储在起始地址。 ...

大端模式与小端模式 网络字节序与主机字节序

大端模式与小端模式 一、概念及详解   在各种体系的计算机中通常采用的字节存储机制主要有两种: big-endian和little-endian,即大端模式和小端模式。   先回顾两个关...
  • joy745
  • joy745
  • 2012年04月18日 23:09
  • 345

大端模式与小端模式、网络字节顺序与主机字节顺序(经典)

大端模式与小端模式 一、概念及详解   在各种体系的计算机中通常采用的字节存储机制主要有两种: big-endian和little-endian,即大端模式和小端模式。   先...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【网络编程】大端模式和小端模式
举报原因:
原因补充:

(最多只允许输入30个字)