请问什么是网络字节序?怎样转换?

ymll 2002-08-02 02:46:34
请问什么是网络字节序?怎样转换?
...全文
253 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingzai 2002-08-02
  • 打赏
  • 举报
回复
首先是字与双字在各种系统中内部存储的方式的不同,在Windows中字与双字是高位在低地址排列的,而网络传输的标准是低位在低地址排列,比如一个十进制数字4660在Windows系统中存储成3412h,而在网络上表示是1234h。所以我们在设置或读取协议首部中有关用字或双字表示(一般象TCP中的端口、序号,而IP地址则不是)的字段时要切记转换他们的排列顺序。下面是一个转换字排列顺序的转换算法:

WORD SwapWord(WORD WordToReverse)
{
WORD lo,hi;
WORD result;

lo= WordToReverse & 0xff;
hi= WordToReverse & 0xff00;
lo=lo<<8;
hi=hi>>8;
result=hi | lo;

return result;
}
在实际编程中调用winsock函数进行转换即可
horris 2002-08-02
  • 打赏
  • 举报
回复
网络字节顺序是对整型和浮点型而言的,对于多字节的数字类型,有高位字节在前还是低位字节在前的区别,在TCP/IP中,好象是规定一律高位字节在前,而Intel 80x86 CPU规定是低位字节在前
SinAngel 2002-08-02
  • 打赏
  • 举报
回复
在Winsock2.h
ymll 2002-08-02
  • 打赏
  • 举报
回复
调用htonl得包含什么头文件呀?是#include <netinet/in.h>吗?可是为什么编译通不过呢?
piaorenqian 2002-08-02
  • 打赏
  • 举报
回复
ntohs // net to host
ntohl
wuxuan 2002-08-02
  • 打赏
  • 举报
回复
网络字节序,与一般字节序不一样,一般字节序如果把是ABCD,则网络字节序是BADC.
转换函数有以下:
htonl,htons,ntohs,ntohl;

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧