小弟对java.net.InetAddress类的 static InetAddress getByAddress(byte[] addr)
这个方法不甚了解,暂讨论IPv4,IP地址长度是4位,如192.168.1.20,对每一位进行byte转换后不是会有溢出吗?为什么溢出后还是可以正确运行?不懂之。
代码贴出来,大家指点迷津:
package socket.studyDemo;import java.net.InetAddress;
import java.net.UnknownHostException;public class InetAddressDemo {
public static void main (String [] args) throws UnknownHostException {
inetAddressByIp("192.168.1.13");
}
/*
* 获取IP byte 字节
*/
private static byte [] getIpByte(String ipAddress) {
String [] ipStr = ipAddress.split("\\.");//以"."拆分字符串
byte [] ipByte = new byte[ipStr.length];
for(int i = 0 ; i < ipStr.length; i++) {
// 进行byte转换后不是会有溢出吗?为什么溢出后还是可以正确运行?
ipByte[i] = (byte)(Integer.parseInt(ipStr[i])&0xFF);//调整整数大小,byte的数值范围为-128~127
}
return ipByte;
}
/**
* 一个getByAddress的测试方法
*/
public static void inetAddressByIp(String ipAddress) throws UnknownHostException {
byte [] ipByte = getIpByte(ipAddress); InetAddress ia = InetAddress.getByAddress(ipByte); System.out.println ("Canonical Host Name = " +
ia.getCanonicalHostName ());
System.out.println ("Host Address = " +
ia.getHostAddress ());
System.out.println ("Host Name = " +
ia.getHostName ());
System.out.println ("Is Loopback Address = " +
ia.isLoopbackAddress ());
}
}java InetAddress
这个方法不甚了解,暂讨论IPv4,IP地址长度是4位,如192.168.1.20,对每一位进行byte转换后不是会有溢出吗?为什么溢出后还是可以正确运行?不懂之。
代码贴出来,大家指点迷津:
package socket.studyDemo;import java.net.InetAddress;
import java.net.UnknownHostException;public class InetAddressDemo {
public static void main (String [] args) throws UnknownHostException {
inetAddressByIp("192.168.1.13");
}
/*
* 获取IP byte 字节
*/
private static byte [] getIpByte(String ipAddress) {
String [] ipStr = ipAddress.split("\\.");//以"."拆分字符串
byte [] ipByte = new byte[ipStr.length];
for(int i = 0 ; i < ipStr.length; i++) {
// 进行byte转换后不是会有溢出吗?为什么溢出后还是可以正确运行?
ipByte[i] = (byte)(Integer.parseInt(ipStr[i])&0xFF);//调整整数大小,byte的数值范围为-128~127
}
return ipByte;
}
/**
* 一个getByAddress的测试方法
*/
public static void inetAddressByIp(String ipAddress) throws UnknownHostException {
byte [] ipByte = getIpByte(ipAddress); InetAddress ia = InetAddress.getByAddress(ipByte); System.out.println ("Canonical Host Name = " +
ia.getCanonicalHostName ());
System.out.println ("Host Address = " +
ia.getHostAddress ());
System.out.println ("Host Name = " +
ia.getHostName ());
System.out.println ("Is Loopback Address = " +
ia.isLoopbackAddress ());
}
}java InetAddress
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货