IP地址c++题解

题目描述

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;
}
相关推荐
(Charon)6 分钟前
【C++面试】手写线程池:任务队列、工作线程与优雅退出
开发语言·c++
无名猿24 分钟前
拷贝构造与拷贝赋值:调用时机、深浅拷贝与复制消除
c++·内存管理·现代c++·踩坑记录
朝朝辞暮i1 小时前
C++ 第一阶段总结:从零基础到 ROS2 前置语法
开发语言·c++·算法
朝朝辞暮i1 小时前
C++ 第 25 课:getter / setter + this
java·javascript·c++
All for pursuit.2 小时前
【回溯-4】46.全排列
数据结构·c++·算法·leetcode
无名猿2 小时前
裸指针还能不能用:不拥有与拥有的边界
c++·内存管理·现代c++·语法基础
Yyyyyy~2 小时前
【C++】STLday1
c++
无名猿2 小时前
左值、右值、纯右值、将亡值:值类别入门
c++·内存管理·现代c++·语法基础
程序员老陆2 小时前
C++ 将亡值(xvalue)深度解析:从表达式分类到参数传递陷阱
c++·程序设计
沫璃染墨3 小时前
《Qt从零入门系列(十二):Qt文件操作详解——从QFile读写到QFileInfo与记事本实战》
开发语言·网络·c++·qt·交互·信号处理·文件