主机字节序+网络字节序

转载 2015年11月17日 15:54:20

什么是字节序?是指整数在内存中保存的顺序。
      字节序有两种:
      a.Little endinan 低位存储在内存的低地址,高位存储在内存的高地址;
      b.Big endian 高位存储在内存的低地址,低位存储在内存的高地址;

 

      举个简单的例子:
DWORD dwCount = 0x01020304;这样的一个双字节变量在内存中如下分布0013FF70  04 03 02 01
(注:实验结果取之 XPSP3 VC6.0,说明我的机器是Little endinan序)
而如果是Big endian序的话,应该是0013FF70  01 02 03 04。用的比较多的x86系列的CPU,都是Little endinan序的。

 

      而网络字节序这是TCP/IP协议中定义好的一种数据表示格式,它是与你的机器的cpu,操作系统什么的无关的,这样可以保证数据在网络中传输时,不管怎么样都能正确的解释了,网络字节序选择了Big endian。这样就给编写网络程序的程序员带来一个问题,程序员必须把本地数据从主机字节序转换成网络字节序发送到主机,同时,主机也必须把收到的数据从网络字节序转换成本地字节序,这样才能保证双方正确的收发数据,不然就是产生bug。

      winapi提供了四个函数用于进行网络字节序到本机字节序和本机字节序到网络字节序的转换:
htons:把unsigned short类型从主机序转换到网络序
htonl:把unsigned long类型从主机序转换到网络序
ntohs:把unsigned short类型从网络序转换到主机序
ntohl:把unsigned long类型从网络序转换到主机序
(这四个API可以这样记,s表示short,l表示long,n表示network,h表示host)

      另外:char类型是没有字节序的问题的,只有大于一个字节的数据类型才有字节序的问题。很多翻译书籍将Little endinan翻译成小端模式,将Big endian翻译成大端模式。

网络字节序和主机字节序详解!!!

我们都知道,如今的通讯方式已经趋向与多样化,异构通信(计算机软件(操作系统) +    计算机硬件(内核架构,ARM,x86)不同)也已经很普遍了,如,手机和电脑中的qq进行通信,,, 同时,在计...
  • msdnwolaile
  • msdnwolaile
  • 2016年02月24日 09:52
  • 6993

主机字节序与网络字节序的转换过程

主机字节序与网络字节序的转换过程
  • an_tang
  • an_tang
  • 2017年05月29日 17:13
  • 1052

网络字节序与主机字节序

一.什么是Big Endian和Little Endian? 1.故事的起源 “endian”这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(...
  • App_IOS
  • App_IOS
  • 2017年02月07日 11:27
  • 323

主机字节序(大小端判断)及网络字节序

如有转载,请注明出处。 作者:super_bert@csdn 先上两种判断主机字节序的方法(C描述),再详细解释。 判断原理: 1.Union成员本身是被存放在相同的内存空间中(即共享内存),uni...
  • qq302501035
  • qq302501035
  • 2015年04月20日 15:55
  • 1405

网络字节序与主机字节序的转换

在对IP地址结构体SOCKADDR_IN赋值的时候,经常会用到下列的函数htonl,htons,inet_addr,与之相对应的函数是ntohl,ntohs,inet_ntoa。查看这些函数的解析,会...
  • u012317833
  • u012317833
  • 2014年09月20日 08:50
  • 1585

php主机字节序和网络字节序

使用php编写socket程序时,也需要注意主机字节序和网络字节序的转换 主机字节序就是我们平常说的大端和小端模式:不同的 CPU 有不同的字节序类型,这些字节序是指整数在内存中保存的顺序 这个叫做...
  • sole_cc
  • sole_cc
  • 2016年07月24日 22:01
  • 1077

测试平台大端还是小端(网络字节序和主机字节序)

大端和小端(网络字节序和主机字节序): 大端(Big Endian):即网络字节序。 小端(Littile Endian):即主机字节序。 记忆方式:网络的范围很大,所以大端是网络字节序。 大...
  • feifeiwuxian
  • feifeiwuxian
  • 2015年12月29日 15:37
  • 1020

网络字节序、主机字节序

使用TCP/IP协议进行网络应用开发的朋友首先要面对的就是对IP地址信息的处理。IP地址其实有三种不同的表示格式:        1)Ascii(网络点分字符串)-        2) 网络地址(...
  • yuan08shandong
  • yuan08shandong
  • 2015年12月11日 16:34
  • 939

网络字节序和本地字节序

1.字节序定义:是指整数在内存中保存的顺序。2.字节序种类:a.Little endinan 低位存储在内存的低地址,高位存储在内存的高地址;b.Big endian 高位存储在内存的低地址,低位存储...
  • u012627927
  • u012627927
  • 2015年06月11日 15:17
  • 1168

Linux 网络编程——网络字节序、地址转换

一、字节序的概念 字节序是指多字节数据的存储顺序,在设计计算机系统的时候,有两种处理内存中数据的方法:大端格式、小端格式。 小端格式(Little-Endian):...
  • lianghe_work
  • lianghe_work
  • 2015年04月21日 14:43
  • 2085
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:主机字节序+网络字节序
举报原因:
原因补充:

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