题目描述
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址。
IPv4 协议中规定使用 32 位二进制数字(4个字节)来表示计算机的IP地址,这个二进制数字通常被分割为4个" 8 位二进制数",用"点分十进制" 表示成a.b.c.d
的形式,其中a,b,c,d 均小于等于 255 。
32位二进制数字中:
- 第 1 位~第 8 位二进制数字所对应的十进制数字为
a
- 第 9 位~第 16 位二进制数字所对应的十进制数字为
b
- 第 17 位~第 24位二进制数字所对应的十进制数字为
c
- 第 25 位~第 32 位二进制数字所对应的十进制数字为
d
例如:32 位二进制数字为:11000000 10101000 00000001 01100100
中,
11000000
对应十进制数字192
10101000
对应十进制数字168
00000001
对应十进制数字1
01100100
对应十进制数字100
应此该二进制所对应的IP地址位192.168.1.100
现给定一个 32 位的二进制数字,请你将它转换为对应IP地址
输入格式
输入共一行:32 位二进制数字
输出格式
输出共一行:表示其对应IP地址,四个十进制数字之间用.
隔开
数据范围
数据保证输入的 32位二进制数字合法
输入样例
11000000101010000000000101100100
输出样例
192.168.1.100
AC代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
int a[4]={};
for(int i=0;i<32;i++){
a[i/8]+=(s[i]-'0')*(1<<(7-i%8));
}
cout<<a[0]<<"."<<a[1]<<"."<<a[2]<<"."<<a[3]<<"\n";
return 0;
}