java将IP地址转换为数字以及逆向转换(位移和0xFF的使用)
2013-12-10 15:09
549 查看
转载自:
http://www.mkyong.com/java/java-and-0xff-example/
public class BitwiseExample {
public static void main(String[] args) {
BitwiseExample obj = new BitwiseExample();
long ipAddressInLong = obj.ipToLong("192.168.108.108");
System.out.println(ipAddressInLong);
String binary = Long.toBinaryString(ipAddressInLong);
System.out.println(binary);
printPrettyBinary(binary);
String ipAddressInString = obj.longToIp(ipAddressInLong);
System.out.println(ipAddressInString);
}
public long ipToLong(String ipAddress) {
String[] addrArray = ipAddress.split("\\.");
long num = 0;
for (int i = 0; i < addrArray.length; i++) {
int power = 3 - i;
// 1. (192 % 256) * 256 pow 3
// 2. (168 % 256) * 256 pow 2
// 3. (108 % 256) * 256 pow 1
// 4. (108 % 256) * 256 pow 0
num += ((Integer.parseInt(addrArray[i]) % 256 * Math
.pow(256, power)));
}
return num;
}
public String longToIp(long i) {
return ((i >> 24) & 0xFF) + "." + ((i >> 16) & 0xFF) + "."
+ ((i >> 8) & 0xFF) + "." + (i & 0xFF);
}
// print pretty binary code, padding left zero
private static void printPrettyBinary(String binary) {
String s1 = String.format("%32s", binary).replace(' ', '0');
System.out.format("%8s %8s %8s %8s %n", s1.substring(0, 8), s1
.substring(8, 16), s1.substring(16, 24), s1.substring(24, 32));
}
}
Output:
3232263276
11000000101010000110110001101100
11000000 10101000 01101100 01101100
192.168.108.108
谷歌时经常能查到该作者的博文,E文通俗易懂,内容清晰明了,很喜欢!
http://www.mkyong.com/java/java-and-0xff-example/
public class BitwiseExample {
public static void main(String[] args) {
BitwiseExample obj = new BitwiseExample();
long ipAddressInLong = obj.ipToLong("192.168.108.108");
System.out.println(ipAddressInLong);
String binary = Long.toBinaryString(ipAddressInLong);
System.out.println(binary);
printPrettyBinary(binary);
String ipAddressInString = obj.longToIp(ipAddressInLong);
System.out.println(ipAddressInString);
}
public long ipToLong(String ipAddress) {
String[] addrArray = ipAddress.split("\\.");
long num = 0;
for (int i = 0; i < addrArray.length; i++) {
int power = 3 - i;
// 1. (192 % 256) * 256 pow 3
// 2. (168 % 256) * 256 pow 2
// 3. (108 % 256) * 256 pow 1
// 4. (108 % 256) * 256 pow 0
num += ((Integer.parseInt(addrArray[i]) % 256 * Math
.pow(256, power)));
}
return num;
}
public String longToIp(long i) {
return ((i >> 24) & 0xFF) + "." + ((i >> 16) & 0xFF) + "."
+ ((i >> 8) & 0xFF) + "." + (i & 0xFF);
}
// print pretty binary code, padding left zero
private static void printPrettyBinary(String binary) {
String s1 = String.format("%32s", binary).replace(' ', '0');
System.out.format("%8s %8s %8s %8s %n", s1.substring(0, 8), s1
.substring(8, 16), s1.substring(16, 24), s1.substring(24, 32));
}
}
Output:
3232263276
11000000101010000110110001101100
11000000 10101000 01101100 01101100
192.168.108.108
谷歌时经常能查到该作者的博文,E文通俗易懂,内容清晰明了,很喜欢!
相关文章推荐
- java将IP地址转换为数字以及逆向转换(位运算和0xFF的使用)第二季
- java将IP地址转换为数字以及逆向转换
- JAVA面试 不使用API情况下,把数字字符串转换成int类型
- json数据解析与JAVA对象转换以及在JQUERY中的使用
- Java中Date,Calendar,Timestamp的区别以及相互转换与使用
- Java写的手机计费系统(作为学习参考的实例:关键是Java类库里面的date和Calendar的使用和相互转换,以及一些日期的实际问题)
- 使用Java解析svg文件,以及将获取的Element转换成String
- Java中Date,Calendar,Timestamp的区别以及相互转换与使用
- JSON以及Java转换JSON的方法(前后端经常使用处理方法)
- 关于字符和数字类型的索引,Oracle如何实现内部自动转换以及索引使用的验证测试
- JAVAWEB开发之Struts2详解(二)——Action接受请求参数、类型转换器、使用Struts2的输入校验、以及遵守约定规则实现Struts2的零配置
- java中json包的使用以及字符串,map,list,自定义对象之间的相互转换
- Java实现阿拉伯数字转换成中文大写数字,以及中文大写数字到阿拉伯数字的转换。
- java中json包的使用以及字符串,map,list,自定义对象之间的相互转换
- 关于字符和数字类型的索引,Oracle如何实现内部自动转换以及索引使用的验证测试
- java enum的使用以及字符串其字符串之间的转换
- 使用 JAVA 将数字金额转换成大写中文金额
- java实现自定义数字验证码以及使用方法
- Java中Date,Calendar,Timestamp的区别以及相互转换与使用 详细出处参考:http://www.jb51.net/article/41076.htm
- @V@ java代码笔记2010-06-12:java控制台输入各类型类实现;以及判断输入字符串里面是否有数字的两种方法:方法1:转换成字符数组;方法2:正则表达式。