java中byte是-127~127 但是 ip中 192.168.1.1怎么办

发布网友 发布时间: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不行啊

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com