LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 820|回复: 1

一段计算二进制IP的程序,感觉有问题。

[复制链接]
发表于 2006-11-1 20:15:19 | 显示全部楼层 |阅读模式
比如说192.168.0.2---192.168.0.6应该是5个数,可是用下边的程序计算机的得数就很奇怪。

$ ./a.out 192.168.0.2 192.168.0.6
192.168.0.2 is right IP format
192.168.0.6 is right IP format
192.168.0.6(100706496)-192.168.0.2(33597632)=67108864

  1. #include <stdio.h>
  2. #include <arpa/inet.h>
  3. int main(int argc,char **argv[])
  4. {
  5. struct in_addr addrptr1;
  6. struct in_addr addrptr2;
  7. if(inet_aton(argv[1],&addrptr1))
  8.         printf("%s is right IP format\n",argv[1]);
  9.    else
  10.     {
  11.      printf("%s is wrong IP format\n",argv[1]);
  12.      return(-1);
  13.     }

  14. if(inet_aton(argv[2],&addrptr2))
  15.         printf("%s is right IP format\n",argv[2]);
  16.    else
  17.     {
  18.      printf("%s is wrong IP format\n",argv[2]);
  19.      return(-1);
  20.     }
  21. printf("%s(%d)-%s(%d)=%d\n",argv[2],addrptr2.s_addr,argv[1],addrptr1.s_addr,addrptr2.s_addr-addrptr1.s_addr);
  22. exit(0);
  23. }
复制代码
发表于 2006-11-1 21:23:09 | 显示全部楼层
你需要转换成主机字节序再计算
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表