”将一个unsigned long 型的IP转换为字符串类型的IP “ 解释

/*  将一个unsigned long 型的IP转换为字符串类型的IP */
#define IPTOSBUFFERS    12
char *iptos(u_long in)
{
    static char output[IPTOSBUFFERS][3*4+3+1];  //ip字符串格式包含4个三位数加三个点加一个结尾符
    static short which;
    u_char *p;

    p = (u_char *)∈
    which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1);
    sprintf(output[which], "%d.%d.%d.%d", p[0],p[1], p[2], p[3]);
    return output[which];
}


解释:http://topic.csdn.net/t/20051007/20/4310836.html

如下:这是个特殊应用的转换函数 

#define   IPTOSBUFFERS   12 //定义缓冲区大小为12个,从下面的函数知道 
//这个函数可以保留11个转换结果 

char   *iptos(u_long   in) 

static   char   output[IPTOSBUFFERS][3*4+3+1];//输出3点4段的字符串,可以容纳12次计算结果,但第一个没有使用 
static   short   which; //   计数 
u_char   *p; 

p   =   (u_char   *)∈ //   指向长整数IP地址的字符型指针 
which   =   (which   +   1   ==   IPTOSBUFFERS   ?   0   :   which   +   1); //   每调用本函数一次,计数器加1 
sprintf(output[which],   "%d.%d.%d.%d ",   p[0],   p[1],   p[2],   p[3]);//转换为3点4段的字符串如192.168.0.1,并保存到一个 
//output缓冲中 
return   output[which];//返回这个转换结果。 


struct   sockaddr_in   *a; 
...... 
iptos(a-> sin_addr.s_addr); 


------- 

这个函数可以保留11次转换结果,但结果在子函数内部,不知道编程者干什么用,如果不需要这些,可以很简单改编为: 

char   *iptos(u_long   in) 

static   char   output[3*4+3+1];//输出3点4段的字符串 
u_char   *p; 

p   =   (u_char   *)∈ //   指向长整数IP地址的字符型指针 
sprintf(output,   "%d.%d.%d.%d ",   p[0],   p[1],   p[2],   p[3]); 
return   output;//返回这个转换结果。 
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值