Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1774480
  • 博文数量: 198
  • 博客积分: 4088
  • 博客等级: 上校
  • 技术积分: 2391
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-15 16:29
个人简介

游戏开发,系统架构; 博客迁移到:http://www.jianshu.com/u/3ac0504b3b8c

文章分类

全部博文(198)

文章存档

2017年(1)

2016年(12)

2015年(1)

2014年(3)

2013年(13)

2012年(18)

2011年(150)

分类: C/C++

2013-09-04 18:08:59


  1. #include <iostream>
  2. #include <string>

  3. std::string int2str(int i)
  4. {
  5.     char t[20] = {0};
  6.     sprintf(t, "%d", i);
  7.     return t;
  8. }

  9. std::string ip_int2str(int ip)
  10. {
  11.             std::string ret = "";
  12.             int i = 0;
  13.             while( i < 4 )
  14.             {
  15.                    int a = ( ip >> (i * 8) ) & 0xFF;
  16.                    if( i < 3)
  17.                        ret += int2str(a) + ".";
  18.                    else
  19.                        ret += int2str(a);
  20.                    i ++;
  21.             }
  22.             
  23.             return ret;
  24. }

  25. int ip_str2int(std::string ip)
  26. {
  27.     int ret = 0;
  28.     char* p = (char*)ip.c_str();
  29.     char* a[4] = {0};
  30.     int b[4] = {0};
  31.     int in = 0;
  32.     while((a[in] = strtok(p, ".")) != NULL)
  33.     {
  34.                    p = NULL;
  35.                    sscanf(a[in], "%d", &b[in]);
  36.                    in++;
  37.                    
  38.     }
  39.     
  40.     for( int i = 3; i >= 0; --i )
  41.     {
  42.          ret = ret << 8;
  43.          ret += b[i];
  44.     }
  45.     
  46.     return ret;
  47. }

  48. int main()
  49. {
  50.     printf("0, ip int -> str.\n");
  51.     printf("1, ip str -> int.\n");
  52.     
  53.     int i = 0 ;
  54.     std::cin >> i;
  55.     
  56.     if( i == 0 )
  57.     {
  58.         int ip_int = 0;
  59.         while(true)
  60.         {
  61.             std::cout << "input ip_int:";
  62.             std::cin >> ip_int;
  63.             std::string str = ip_int2str(ip_int);
  64.             printf("ip_str:%s\n", str.c_str());
  65.         }
  66.         
  67.     }else
  68.     {
  69.          std::string ip_str = "";
  70.          while(true)
  71.          {
  72.              std::cout << "input ip_str:";
  73.              std::cin >> ip_str;
  74.              int ip_int = ip_str2int(ip_str);
  75.              printf("ip_int:%d\n", ip_int);
  76.          }
  77.          
  78.     }
  79.     
  80.     system("pause");
  81.     return 0;
  82. }

阅读(5716) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~