java中byte是-127~127 但是 ip中 192.168.1.1怎么办
展开全部
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();
}
}
}
=========
转换后字节:[-64, -88, 1, 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();
}
}
}
=========
转换后字节:[-64, -88, 1, 1]
转换后地址:192.168.1.1
追问
字节能当地址用?
追答
原始的ip地址等同于字节
展开全部
byte类型有8个bit,作为带符号数,最高位是符号位,剩余7位的最大值是127,所以范围是-127~127。这里它让你传入的是无符号值,不考虑符号位,这样8位可以标示的范围是0~256。 赋值的时候直接强制转换即可:byte b = (byte) 192;
追问
但是 是负数啊 能用吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
范围是-128~127吧...
得到转化为int就好了
(b+256)%256
得到转化为int就好了
(b+256)%256
更多追问追答
追问
InetAddress java.net.InetAddress.getByAddress(byte[] addr)
他需要byte
追答
直接放进去会有异常吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用short不行啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询