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

 我来答
百度网友9308069
推荐于2016-05-31 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:1945万
展开全部
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地址等同于字节
liujian885
2012-01-17
知道答主
回答量:3
采纳率:0%
帮助的人:4952
展开全部
byte类型有8个bit,作为带符号数,最高位是符号位,剩余7位的最大值是127,所以范围是-127~127。这里它让你传入的是无符号值,不考虑符号位,这样8位可以标示的范围是0~256。 赋值的时候直接强制转换即可:byte b = (byte) 192;
追问
但是 是负数啊 能用吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小麦的软件工厂
2012-01-17 · TA获得超过396个赞
知道小有建树答主
回答量:512
采纳率:0%
帮助的人:432万
展开全部
范围是-128~127吧...
得到转化为int就好了
(b+256)%256
更多追问追答
追问
InetAddress java.net.InetAddress.getByAddress(byte[] addr) 
他需要byte
追答
直接放进去会有异常吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ForgetBygone
2012-01-17 · 超过30用户采纳过TA的回答
知道答主
回答量:133
采纳率:0%
帮助的人:83.5万
展开全部
用short不行啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式