整数与IP地址间的转换
来源:互联网 发布:淘宝充话费联通 编辑:程序博客网 时间:2024/05/18 13:24
题目描述
原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成
一个长整数。
举例:一个ip地址为10.0.3.193
每段数字 相对应的二进制数
10 00001010
0 00000000
3 00000011
193 11000001
组合起来即为:00001010 00000000 00000011 11000001,转换为10进制数就是:167773121,即该IP地址转换后的数字就是它了。
的每段可以看成是一个0-255的整数,需要对IP地址进行校验
输入描述:
输入 1 输入IP地址2 输入10进制型的IP地址
输出描述:
输出1 输出转换成10进制的IP地址2 输出转换后的IP地址
输入例子:
10.0.3.193167969729
输出例子:
16777312110.3.3.193
思路:(1)将IP转换为对应10进制数字;设置一个量为1,与对应位相与判断该位置是否为1,如果为1,将该位对应值累加,一直到移位判断32次;
(2)将10进制数转换为IP地址;同样采用移位每移位8次,算出介于0~255的数放到vector容器中,一共存4个数,最后再反向输出,注意加“.”
代码如下(还要保证 long long 型)
#include<iostream>#include<string>#include<vector>using namespace std;long long power(int i)//用于计算2的多次幂{long long s = 1;for (int j = 0; j < i; j++)s *= 2;return s;}void tr(long long num)//将10进制数转换为IP地址输出{vector<int> v;int sum, time = 0;int in = 1;while (time <4){sum = 0;for (int i = 0; i < 8; i++){if (num&in){sum += power(i);}in = in << 1;}v.push_back(sum);time++;}for (int i = v.size() - 1; i >= 0; i--)if (i == 0)cout << v[i] << endl;else cout << v[i] << '.';}long long trl(int a,int b,int c,int d)//将IP地址转换为10进制数输出{long long num = 0;long in = 1;for (int i=0; i < 8; i++){if (d&in)num += power(i);in = in << 1;}in = 1;for (int i=0; i < 8; i++){if (c&in)num += power(i+8);in = in << 1; }in = 1;for (int i=0; i < 8; i++){if (b&in)num += power(i+16);in = in << 1;}in = 1;for (int i=0; i < 8; i++){if (a&in)num += power(i+24);in = in << 1;}return num;}int main(){int a, b, c, d;//用于记录IP地址的各位char s;long long num;//记录10进制地址while (cin>>a>>s>>b>>s>>c>>s>>d){cin >> num;cout <<trl(a, b, c, d) << endl;tr(num);}return 0;}
0 0
- 整数与IP地址间的转换
- 整数与IP地址间的转换
- 整数与IP地址间的转换
- 整数与IP地址间的转换
- 整数与IP地址间的转换
- 整数与ip地址间的转换
- IP地址与整数之间的转换
- IP地址与整数之间的转换
- IP地址与整数之间的转换
- IP地址与整数之间的转换
- IP地址与整数的相互转换
- ip地址与整数之间的转换
- ip地址与整数之间的转换
- 整数与ip地址之间的转换
- 华为OJ 整数与IP地址间的转换
- 华为OJ(整数与IP地址间的转换)
- Java算法---整数与IP地址间的转换
- 【华为OJ】【030-整数与IP地址间的转换】
- 将优化问题转换为决策问题求解
- 洗牌问题——偶数张扑克牌,分成两等份, 洗牌多少次回到原来顺序?
- 何时重构
- Unity3D NGUI蒙版效果实现方法
- LayoutInflater小结
- 整数与IP地址间的转换
- MongoVE连接MongoDB 不显示数据问题
- HTML5 拖放
- JAVA基础6.58——抽象类(1)
- [Intel汇编-NASM]进入保护模式之前的准备
- C++从后台输入多行长度未知的数字
- Linux下的定时任务
- MAC下配置ANDROID环境变量
- Git多人基本使用笔记