您的位置:首页 > 理论基础 > 计算机网络

字节序理解

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类型的系统中 这些函数会定义成空宏

同样 在网络程序开发时 或是跨平台开发时 也应该注意保证只用一种字节序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络 socket cpu 字节序