字节序理解
2015-03-08 10:29
134 查看
字节序分为:网络字节序、主机字节序
一、主机字节序
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类型的系统中 这些函数会定义成空宏
同样 在网络程序开发时 或是跨平台开发时 也应该注意保证只用一种字节序。
一、主机字节序
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类型的系统中 这些函数会定义成空宏
同样 在网络程序开发时 或是跨平台开发时 也应该注意保证只用一种字节序。
相关文章推荐
- 字节序(大小端)详解从高低地址和高低位开始理解【转】
- 理解字节序
- 彻底理解字节序
- 字节序(大小端)详解从高低地址和高低位开始理解(转)
- 拓展理解字节序
- 字节序大端和小端的理解
- TODO:字节序的一些理解
- 网络字节序和本地字节序的理解和实现
- 理解字节序
- 字节序两种类型的通俗理解
- 字节序(大小端)详解从高低地址和高低位开始理解
- 理解字节序
- 两个例子理解主机字节序和网络字节序,不同平台字节序转换
- 字节序转换与结构体位域(bit field)值的读取 Part 2 - 深入理解字节序和结构体位域存储方式
- 字节序(大小端)详解从高低地址和高低位开始理解(转)
- 大小字节序的深入理解和鉴定系统字节序方法
- 字节序理解
- 字节序(大小端)详解从高低地址和高低位开始理解
- 字节序(大小端)详解从高低地址和高低位开始理解(转)
- 字节序(大小端)详解从高低地址和高低位开始理解(转)