华为上机:IP地址转换
| IP地址转换 | |
| 描述: |
IP地址的长度为32,即有2^32-1个地址。IP地址一般采用点分十进制表示法,例如"192.168.1.1"。IP地址也可以直接用一个32位的整数进行表示。本题目要求根据给定的整数IP地址表示发,将其转换为点分十进制的形式。 举个例子: 输入整数IP地址为 3232235777 其对应十六进制为 0xC0A80101 每字节转为十进制 0xC0=192,0xA8=168,0x01=1,0x01=1 则输出为 192.168.1.1 |
| 运行时间限制: | 1 Sec |
| 内存限制: | 100 MByte |
| 输入: |
32位正整数IP地址 |
| 输出: |
点分十进制IP地址 |
| 样例输入: |
3232235777 |
| 样例输出: |
192.168.1.1 |
| 答案提示: |
无 |
程序写的有问题,ip对于的整数比较小的适合有错误,100分只得了29分
167773121
10.3.3.193
这个就报错
下面程序是严格一位一位的计算,出错了
import java.util.*;
public class Main6{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
Long longA = in.nextLong();
// String hex = longToHex(longA);
String hex = Long.toHexString(longA);
hex = hex.toUpperCase();
String ip = hexToIP(hex);
System.out.println(ip);
}
in.close();
}
public static String hexToIP(String hex){
StringBuffer sb = new StringBuffer();
int i;
String s;
for( i=0;i<hex.length()-2;i=i+2){
s = hex.substring(i,i+2);
sb.append(hexToInt(s));
sb.append('.');
}
s = hex.substring(i,i+2);
sb.append(hexToInt(s));
return sb.toString();
}
/**
* 16进制 转化成 10进制
* @param str
* @return
*/
public static int hexToInt(String str){
int res = 0;
int n = str.length();
int pow = (int)Math.pow(16, n-1);
for(int i=0;i<n;i++){
char ch = str.charAt(i);
if(ch<='9'){
res += (ch-48)*pow;
}else{
res += (ch-'A'+10)*pow;
}
pow/=16;
}
return res;
}
/**
* 十进制转化成十六进制
* @param x
* @return
*/
public static String longToHex(long x){
String[] a = new String[]{"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E"};
StringBuffer sb = new StringBuffer();
while(x>0){
int id = (int)(x%16); //求余数,对于数组id
sb.insert(0, a[id]); // 插入到第0个位置
x=x/16; // 更新
}
// sb.insert(0, "0x");
return sb.toString();
}
}
百度一下
通过位运算比较简单了,但是违背了题意思
public static String bugs(long temp){
long a=((temp&0xff000000)>>24);
long b=((temp&0x00ff0000)>>16);
long c=((temp&0x0000ff00)>>8);
long d=(temp&0x000000ff);
return a+"."+b+"."+c+"."+d;
}
华为上机:IP地址转换的更多相关文章
- ip地址转换
通常,我们用点分十进制字符串表示ipv4地址(192.168.1.1),用十六进制字符串表示ipv6地址(fe80::20c:29ff:fee9:4bcc). ipv4转换函数 #include &l ...
- [转]字符型IP地址转换成数字IP的SQL函数
使用SQL函数可以实现许多的功能,下面为您介绍的是字符型IP地址转换成数字IP的SQL函数示例,供您参考,希望对您学习SQL函数能够有所帮助. /**//*--调用示例 sele ...
- IP地址转换成Long型数字的算法
在应用程序开发中,涉及到IP地址的存储,大部分开发人员都将其存为String(或文本类型).能否将固定格式为m.n.x.y的IP地址转换成 Long型的数字呢?答案是肯定的.在数据库层面,可以直接将结 ...
- 四、IP地址转换
IP地址与端口 TCP/IP(传输控制协议/网际协议)不是一个协议,而是一组协议的总称,包括IP.TCP.UDP.ICMP.ARP等.它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据 ...
- 字符串-06. IP地址转换
/* * Main.c * D6-字符串-06. IP地址转换 * Created on: 2014年8月19日 *******测试通过******** *转载:http://blog.csdn.ne ...
- 套接字编程相关函数(1:套接字地址结构、字节序转换、IP地址转换)
1. 套接字地址结构 1.1 IPv4套接字地址结构 IPv4套接字地址结构通常也称为“网际套接字地址结构”,它以sockaddr_in命名,定义在<netinet/in.h>头文件中.下 ...
- python整数与IP地址转换
python整数与IP地址转换 [转] 我们有时会将一个整数与IP地址进行互换,用python代码实现很简单将一个整数如2000000,变为一个IP地址的方式 >>> import ...
- IP地址转换函数
只适用于IPV4 inet_addr函数将用点分十进制字符串表示的IPv4地址转化为用网络字节序整数表示的IPv4地址. 失败时返回INADDR_NONE. inet_aton函数完成和inet_ad ...
- 【网络编程一】主机字节序与网络字节序以及ip地址转换函数
在计算机设计之初,对内存中数据的处理也有不同的方式,(低位数据存储在低位地址处或者高位数据存储在低位地址处),然而,在通信的过程中(ISO/OSI模型和TCP/IP四层模型中),数据被一步步封装(然后 ...
随机推荐
- MVC4.0 利用HandleErrorAttribute和log4net实现记录异常日志功能
1.MVC4.0中HandleErrorAttribte已经帮我们处理了异常问题,当我们新建一个非空的MVC项目时候,在FilterConfig中会发现这样的代码 public class Filte ...
- 1 通过JNI混合使用Java和C++ -----> 操作字符串
JNI(Java Native Interface)是Java语言的一部分,可以访问非Java语言编写的程序,也可以用于在C++程序中执行Java代码. 步骤: 1> 编写带有native声明 ...
- FPGA保留信号的语句
(*synthesis,keep*) (*synthesis,probe_port,keep *) 例:(*synthesis,probe_port,keep *) wire e; 可用于wire型和 ...
- Oracle把两个空格以上的空格,替换为两个空格
substr( ,instr(,)),)) ) 解释如下: 1. 去掉原字串左右的空格的字符(STR),2.查找STR中空格出现二次的位置(LOC),3.从STR中的第一位到LOC-1截取STR||L ...
- 四则运算之C++版
一.设计思想 之前的版本是用Java语言实现的,在这次的练习中,我用C++语言将其功能逐一实现,其实C++与Java有很多相似之处,只是一些书写格式不同,思路还是一样的. 二.源代码 #include ...
- hasOwnProperty与isPrototypeOf
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Java 7 中 NIO.2 的使用——第一节 Path 类的使用
路径隶属于文件系统,实际上它是存储和组织媒体文件的格式,通常在一块或多块硬盘设备上,以便于非常容易地检索.文件系统可以通过 java.nio.file.FileSystems 这个final 类来访 ...
- Struts2中的ModelDriven机制及其运用(转)
所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象.比如,有实体类User如下: package cn.com.leadfar.struts2.actions; public cla ...
- css中的border还可以这样玩
在看这篇文章之前你可能会觉得border只是简单的绘制边框,看了这篇文章,我相信你也会跟我一样说一句"我靠,原来css中的border还可以这样玩".这篇文章主要是很早以前看了别人 ...
- shell编程之sleep的运用
#!/bin/bashecho -n "Count:"tput sccount=0;while true;doif [ $count -lt 40 ]then let count+ ...