免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1982 | 回复: 6
打印 上一主题 下一主题

[C] 求助:网络类型 到 本地类型 转换!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-21 00:43 |只看该作者 |倒序浏览
本帖最后由 gouven 于 2010-06-21 00:44 编辑

请教下论坛里的各位前辈,由于大小端的问题,抓包的时候顺序是反的,请问下有没有像arpa/inet.h中的inet_ntoa()类似的函数,能直接把想要的数据转换过来。

比如:我要取出IP头部中的 Header Checksum值,比如本来值是(0xd17d),我如果直接取的话,得到的值就会是(0x7dd1)。

有没有直接能够转换的函数呢??

论坛徽章:
0
2 [报告]
发表于 2010-06-21 01:10 |只看该作者
或者哪里有资料可以看,大家指点下我。

论坛徽章:
0
3 [报告]
发表于 2010-06-21 01:28 |只看该作者
man htons



htonl,  htons,  ntohl,  ntohs - convert values between host and network
       byte order

论坛徽章:
0
4 [报告]
发表于 2010-06-21 01:36 |只看该作者
  1. inline void endian_swap(unsigned short& x)
  2. {
  3.     x = (x>>8) |
  4.         (x<<8);
  5. }
复制代码
http://www.codeguru.com/forum/showthread.php?t=292902

找到的一个方法。

哎,原来这么简单的一个函数。
之前有看到过类似的转换方法,为什么该派上用场时就想不起来了呢~~
都怪自己太懒了,只想着要现成的了,结果花了好长时间

论坛徽章:
0
5 [报告]
发表于 2010-06-21 01:38 |只看该作者
回复 3# sunrace2000

谢谢,请问这是库函数吗?我man没有找到

论坛徽章:
0
6 [报告]
发表于 2010-06-21 01:40 |只看该作者
http://graphics.stanford.edu/~seander/bithacks.html

另:这是上次逛论坛时看到的,好像是CU上的,贴出来。

论坛徽章:
0
7 [报告]
发表于 2010-06-21 01:41 |只看该作者
是的

#include <arpa/inet.h>
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP