您的位置:首页 > 编程语言 > Java开发

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文通俗易懂,内容清晰明了,很喜欢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 移位操作 0xFF
相关文章推荐