云上的老鼠

云上的日子

  DonewsBlog  |  Donews首页  |  Donews社区  |  Donews邮箱  |  我的首页  |  联系作者  |  聚合   |  登录
  76篇文章 :: 0篇收藏:: 61篇评论:: 0个Trackbacks

公告

这是quickmouse的blog哟

^______^

文章的转载请保留全文以及注明出处,谢谢合作!

文章

收藏

相册

常用链接

我的联系方式

友情推荐

主人推荐

存档


正在读取评论……


2004年11月17日 by Quickmouse(quickmouse@263.net)

    今天被这两个函数涮了一把,其实是自己太笨了。先是看自己写的两个socket BPF函数对于数据的处理用了不同的转换,其中一个用htonl,另外一个用了ntohl,于是写了一个这样的测试程序,呵呵:
#include <stdio.h>
#include <netinet/in.h>

int main(void)
{
        char mac[]="\x01\x02\x03\x04\x05\x06";
        unsigned int k1,k2, k3;

        printf("length:%d\n", sizeof(mac));
        k1 = htonl(*(unsigned int *)(mac+2));
        k2 = ntohl(*(unsigned int *)(mac+2));
        k3 = (*(unsigned int *)(mac+2));
        printf("k1:%x\n", k1);
        printf("k2:%x\n", k2);
        printf("k3:%x\n", k3);
        return 1;
}

  猜结果怎么着:
[zgh@Kernel26 test]$ ./a.out
length:7
k1:3040506
k2:3040506
k3:6050403

    发现htonl和ntohl结果是一样的,郁闷了好久,终于发现这两个函数其实都是把数据顺序交换一下位置而已,从结果上来说,它们是一样的。用不同的函数名只是为了好记罢了,唉。



Trackback: http://tb.donews.net/TrackBack.aspx?PostId=175931


[点击此处收藏本文]  发表于2004年11月19日 9:07 PM




正在读取评论……

发表评论

大名:
网址:
验证码
评论