Chinaunix首页 | 论坛 | 博客
  • 博客访问: 350732
  • 博文数量: 122
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 1191
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-24 11:12
文章分类

全部博文(122)

文章存档

2010年(122)

我的朋友

分类: C/C++

2010-03-01 19:39:43

资源来源:http://blog.chinaunix.net/u3/105033/index.html

 

一、        问题描述

 

将一个用二进串表示的IP地址表示成点分十进制数,如00000011100000001111111111111111

将表示成3.128.255.255

 

二、        解答思路

 

把串分成四组,每组8位,将这8位二进制串转化为十进制数,公式如下:

Sum=27*b[7]+26*b[6]+25*b[5]+24*b[4]+23*b[3]+22*b[2]+21*b[1]+20*b[0]

另外,就是注意一下有多个测试用例。

 

三、        代码实现

 

#include<iostream>
#include<string>
#include<bitset>
using namespace std;
int main()
{
    int n;
    cin>>n;
    string s;
    while(n>0)
    {
        cin>>s;    
        bitset<8> one(s,0,8);
        bitset<8> two(s,8,8);
        bitset<8> three(s,16,8);
        bitset<8> four(s,24,8);
        cout<<one.to_ulong()<<"."<<two.to_ulong()<<"."<<three.to_ulong()<<"."<<four.to_ulong()<<endl;
        n--;        
    }
    return 0;
}


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