Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5707690
  • 博文数量: 675
  • 博客积分: 20301
  • 博客等级: 上将
  • 技术积分: 7671
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-31 16:15
文章分类

全部博文(675)

文章存档

2012年(1)

2011年(20)

2010年(14)

2009年(63)

2008年(118)

2007年(141)

2006年(318)

分类: C/C++

2006-11-15 15:44:49

#include /*主机字节顺序与网络字节顺序的转换*/
#include /*ip地址和点分十进制的转换*/
#include

int main(int argc,char **argv)
{
    unsigned int addr;
    struct in_addr ip;

    if(argc != 2)
    {
        fprintf(stderr,"Usage: hex2dd 0x734834\n");
        return 0;
    }

    sscanf(argv[1],"%x",&addr); /*将输入转换为十六进制的int*/
    ip.s_addr = htonl(addr); /*转化为网络字节顺序*/

    printf("%s\n",inet_ntoa(ip)); /*将网络字节顺序的地址转换为ip地址*/

    return 1;
}

使用说明:
hex2dd  0x800202f2
128.2.2.242

这里需要注意的是一些函数的使用:
htonl、ntohl是网络字节顺序与主机字节顺序的转换;
inet_ntoa、inet_aton是点分十进制与ip的转换。

ntoa与aton中,"n"表示网络(network);"a"表示应用(appliaction).
阅读(1285) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~