Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1527420
  • 博文数量: 329
  • 博客积分: 2773
  • 博客等级: 少校
  • 技术积分: 4219
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 14:17
个人简介

淡定从容,宁静致远

文章分类

全部博文(329)

文章存档

2016年(4)

2015年(50)

2014年(68)

2013年(45)

2012年(162)

分类: Windows平台

2013-06-05 11:04:41

X86体系用小端字节序,即 低内存地址空间存储数据的低位。 用一个例子说明: #include int pt(const unsigned char *var ,int l, char token) {     int i=0;     const unsigned char *p =var;     printf("LOW <- ");     char s[20];     if (token == 'd') sprintf(s,"[%%03%c] ",token);     else if (token == 'x') sprintf(s,"[%%02%c] ",token);     else if (token == 'o') sprintf(s,"[%%04%c] ",token);     else return -1;     for (i=0; iHIGH\n");     return 1; } int main (int argc, char *argv[]) {         int a =65536;     short int b =256;      pt((unsigned char *)&a, 4, 'd');      pt((unsigned char *)&b, 2, 'd');     return 0; } 得到的结果是: LOW HIGH LOW HIGH --------------如果把a 和 b的值都改成 1, 得到的结果是: LOW HIGH LOW HIGH 可见,X86用 低地址空间存储数据的低位的。 这与Motorola的CPU是相反的。 现在网络上传输的数据的标准顺序为大端字节序。所以,X86就要进行转换。 转换非常简单: #include /* 用到的头文件 */ unsigned long htonl ( unsigned long hostlong );       /* 主机转网络 */ unsigned short htons ( unsigned short hostshort ); /* 主机转网络 */ unsigned long ntohl ( unsigned long netlong );        /* 网络转主机 */ unsigned short ntohs ( unsigned short netshort );   /*网络转主机 */
阅读(3870) | 评论(0) | 转发(0) |
0

上一篇:htons和ntohs的使用

下一篇:source insigh

给主人留下些什么吧!~~