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;
}
相关推荐
unicrom_深圳市由你创科技8 小时前
哪些控制逻辑应该放在 PLC,哪些放在上位机?
c++
玖玥拾10 小时前
C/C++ 基础笔记(十三)继承
c语言·c++·继承
ao-weilai11 小时前
C++:哈希表
c++·哈希算法·散列表
汉克老师11 小时前
GESP7级C++考试语法知识(二、指数函数(1、pow() 函数)
c++·指数函数·pow·gesp7级·精度误差
旖-旎11 小时前
FloodFill(图像渲染)(1)
c++·算法·深度优先·力扣
汉克老师12 小时前
GESP2026年3月认证C++六级真题与解析(编程题1 选数)
c++·动态规划·线性dp·gesp六级·状态转移·选与不选
有点。13 小时前
C++倍增法(练习题)
c++·算法
凡人叶枫13 小时前
Effective C++ 条款23:宁以 non-member、non-friend 替换 member 函数
linux·开发语言·c++·嵌入式开发
C语言小火车13 小时前
什么时候用智能指针?什么时候用裸指针?
c语言·c++·学习·指针
玖玥拾14 小时前
C/C++ 基础笔记(十二)友元、运算符重载
c语言·c++·运算符重载·友元