字节序理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/good123day/article/details/44131311
字节序分为:网络字节序、主机字节序

一、主机字节序
Little-Endian,数据高位存在内存高地址,数据低位存在内存低地址
Big-Endian,数据高位存在内存低地址,数据低位存在内存高地址

根据CPU的不同分为:Little-Endian、Big-Endian

Little-Endian:X86
Big-Endian:Sun的SPARC

Little-Endian操作系统:windows、linux
Big-Endian操作系统:unix

windows中CSP中要传入传出的数据也是Big-Endian,注意适当转换。

二、网络字节顺序
网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,
从而可以保证数据在不同主机之间传输时能够被正确解释。

网络字节顺序采用Big-Endian排序方式。

为了进行转换 bsd socket提供了转换的函数 有下面四个
htons 把unsigned short类型从主机序转换到网络序
htonl 把unsigned long类型从主机序转换到网络序
ntohs 把unsigned short类型从网络序转换到主机序
ntohl 把unsigned long类型从网络序转换到主机序

在使用Little-Endian的系统中 这些函数会把字节序进行转换
在使用Big-Endian类型的系统中 这些函数会定义成空宏

同样 在网络程序开发时 或是跨平台开发时 也应该注意保证只用一种字节序。

猜你喜欢

转载自blog.csdn.net/good123day/article/details/44131311