整数与IP地址间的转换

  

描述
原理: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地址进行校验

知识点 字符串,位运算
运行时间限制 10M
内存限制 128
输入
输入 
1 输入IP地址
2 输入10进制型的IP地址

输出
输出
1 输出转换成10进制的IP地址
2 输出转换后的IP地址

样例输入 10.0.3.193 167969729
样例输出 167773121 10.3.3.193
package com.oj;

import java.util.Scanner;

public class TestOj {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String str = in.nextLine();
		int num = in.nextInt();
		//System.out.println(str+"\n"+num);
		String[] strs = str.split("\\.");
		int[] data = new int[4];
		for(int i = 0;i < 4; i++)
			data[i] = Integer.parseInt(strs[i]);
		System.out.println((data[0]<<24|data[1]<<16|data[2]<<8|data[3]));
		System.out.println(((num&0xff000000)>>24)+"."+((num&0x00ff0000)>>16)+"."+((num&0x0000ff00)>>8)+"."+(num&0x000000ff));
	}
}

  

时间: 2024-10-25 04:32:26

整数与IP地址间的转换的相关文章

【华为OJ】【030-整数与IP地址间的转换】

[华为OJ][算法总篇章] [华为OJ][030-整数与IP地址间的转换] [工程下载] 题目描述 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个长整数. 举例:一个ip地址为10.0.3.193 每段数字 相对应的二进制数 10 00001010 0 00000000 3 00000011 193 11000001 组合起来即为:00001010 00000000 00000011 11000001,转换为10进制数就是:1

python整数与IP地址转换 [转]

我们有时会将一个整数与IP地址进行互换,用python代码实现很简单将一个整数如2000000,变为一个IP地址的方式 >>> import socket >>> import struct >>> int_ip = 123456789 >>> ip = socket.inet_ntoa(struct.pack('I',socket.htonl(int_ip))) #int to ip address '7.91.205.21' &g

整数转IP地址

将一个整数,比如1567898765转换为xxx.xxx.xxx.xxx的IP地址的形式, 以下是源代码 union IPNode{ unsigned int addr; struct { unsigned char s4,s3,s2,s1; };}; void PrintIP(unsigned int x){ IPNode a; a.addr = x; printf("%d.%d.%d.%d\n",a.s1,a.s2,a.s3,a.s4);}void main(){ unsigned

另类网址加密方法 - IP地址进制转换

今天在看子网掩码计算器.本人算数一直是个硬伤,脑子不是十分灵活那种. 但是发现.IP十进制计算.当时没看懂.十进制计算是个什么鬼. 拿百度举例.(因为我们51cto的域名ping后解析出来的地址是无法直接访问的.尴尬) 无论是 www.baidu.com 还是  61.135.169.121 访问后的结果是一样的. 但是还一个访问办法. 无论是  http://1032300921 还是    1032300921 结果也是一样的. 那么问题来了.这个数字是怎么来的. 计算过程如下. 将点分十进

IP地址的三种表示格式及在Socket编程中的应用

转自:http://blog.csdn.net/hguisu/article/details/7449955 使用TCP/IP协议进行网络应用开发的朋友首先要面对的就是对IP地址信息的处理.IP地址其实有三种不同的表示格式:  1)Ascii(网络点分字符串)-        2) 网络地址(32位无符号整形,网络字节序,大头)        3)主机地址 (主机字节序)   IP地址是IP网络中数据传输的依据,它标识了IP网络中的一个连接,一台主机可以有多个IP地址,IP分组中的IP地址在网络

Python 各进制间的转换(转)

转载自:http://blog.chinaunix.net/uid-21516619-id-1824975.html python 2.6以后内置函数#10进制转为2进制>>> bin(10)'0b1010'#2进制转为10进制>>> int("1001",2)9 #10进制转为16进制>>> hex(10)'0xa'#16进制到10进制>>> int('ff', 16)255>>> int('0

【网络技术】根据ip地址子网掩码计算网络地址、直接广播地址、主机号

我不用专业的角度 去分析,我用傻瓜方法去做题. 这是模拟题,拿这个题做例子. 网址类型:当然是B类就不多说了 把ip地址和子网掩码转换成二进制,然后进行与运算. 145.189.24.3        10010001 10111101 00011000 00000011 255.255.224.0      11111111 11111111 11100000 00000000 网络地址:把ip地址和子网掩码进行与运算.两个1碰上是1  一个1碰上是0  两个0碰上 是0 变成了:      

Python—IP地址与整数之间的转换

1. 将整数转换成IP: 思路:将IP地址转换成无符号32位的二进制,再8位进行分割,每8位转换成十进制即可. #!usr/bin/python 2 #encoding=utf-8 3 #1. 将整数转换成32位无符号二进制 4 def intToIp(num): 5 s = [] 6 g = [] 7 h = [] 8 for i in range(32): 9 a = num%2 10 s.insert(0,a) 11 num = num/2 12 print s 13 #2. 每8位进行分

IP 地址转换 inet_addr() inet_ntoa() 笔记

inet_addr()   inet_ntoa() 及其自实现函数self_inet_ntoa() 和 self_inet_addr() 笔记 #include <WINSOCK2.h> #include <iostream> #pragma comment(lib,"WS2_32.LIB") using namespace std; char *self_inet_ntoa(UINT in); ULONG self_inet_addr(const char *