码迷,mamicode.com
首页 > 其他好文 > 详细

字节序理解

时间:2015-03-08 11:51:25      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:网络   socket   cpu   字节序   

字节序分为:网络字节序、主机字节序

一、主机字节序
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   字节序   

原文地址:http://blog.csdn.net/good123day/article/details/44131311

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!