发布网友 发布时间:2022-04-20 10:04
共4个回答
热心网友 时间:2022-07-13 04:51
1、首先没必要再写手工转换,对192.168.1.1直接
Inet4Address a=(Inet4Address) Inet4Address.getByName("192.168.1.1");
2、其次,转换字节用byte即可。byte不仅代表-128-127的数值,也代表8bit的0-255的数据。
import java.net.Inet4Address;
import java.net.UnknownHostException;
import java.util.Arrays;
public class Test {
static public void main(String 参数[]){
String literals[] = ("192.168.1.1").split("\\.",4);
byte ip[]=new byte[4],c=0;
for(String d:literals)
ip[c++]=(byte) Short.parseShort(d);
System.out.println("转换后字节:"+Arrays.toString(ip));
try{
Inet4Address a=(Inet4Address) Inet4Address.getByAddress(ip);
System.out.println("转换后地址:"+a.getHostAddress());
}catch (UnknownHostException e){
e.printStackTrace();
}
}
}
=========
转换后字节:[-, -88, 1, 1]
转换后地址:192.168.1.1追问字节能当地址用?
追答原始的ip地址等同于字节
热心网友 时间:2022-07-13 04:52
byte类型有8个bit,作为带符号数,最高位是符号位,剩余7位的最大值是127,所以范围是-127~127。这里它让你传入的是无符号值,不考虑符号位,这样8位可以标示的范围是0~256。 赋值的时候直接强制转换即可:byte b = (byte) 192;追问但是 是负数啊 能用吗?
热心网友 时间:2022-07-13 04:52
范围是-128~127吧...
得到转化为int就好了
(b+256)%256
热心网友 时间:2022-07-13 04:53
用short不行啊