byte数组转为String的问题 本帖最后由 wudeaaa 于 2010-03-02 12:55:42 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你把"192.168.0.1".getBytes()打出来,就知道为什么了 byte 是一个字节的, 它的取值范围很小,你前两个下标都超出了它的取值范围,所以输出异常,后两个下标正常,所以输出正常 要不改成char[] addr=new char[]; 这个是字符型的两个各有所长,也都有缺陷,有谨慎使用 (byte) 192, (byte) 168 超过byte范围了 byte addr[] = new byte[] { (byte) 192, (byte) 168, (byte) 0, (byte) 1}; 这句话已经将超出byte范围的值强制转换了 byte addr[] = new byte[] { (byte) 192, (byte) 168, (byte) 0, (byte) 1};这句话已经把超出byte范围的值强制转换了 byte的范围是-128到127,127+1=-128,依次类推127+(192-127)=-64,127+(168-127)=-88 public static void byte2int() { byte addr[] = new byte[] { (byte) 192, (byte) 168, (byte) 0, (byte) 1 }; String s = ""; for (int j = 0; j < addr.length; j++) { int a = addr[j]; if (a < 0) { a = 256 + a; } s += a + "."; } System.out.println(s); } public static void bytetochar() { byte addr[] = new byte[] { (byte) 192, (byte) 168, (byte) 0, (byte) 1 }; StringBuffer buff = new StringBuffer(); for (int j = 0; j < addr.length; j++) { buff.append("." + (addr[j] & 0xff)); } String sip = buff.substring(1); System.out.println(sip); } buff.append((addr[j] & 0xff)+"."); java爱好者的免费学习视频、实战视频下载列表 参见博客http://user.qzone.qq.com/312311285/blog/1264432325 ========================================麻烦同志。如果把“.”放在后面,你什么时候删除?放在前面最好。buff.substring(1); 看清楚再回复好吗? 一个进度条的问题 SQL:ORA-00923 怎么把界面变成立体水晶效果? 请教高手 网线断开判断 看过《Effctive Java》的请进来,本来还是了解同步(synchronized)的,但是看了这段以后,迷糊中!希望学习线程的也可以进来。分不够再 关于时间型和字符串型的转化问题?十万火急 请教配置问题 一个简单问题!!! 如何隐藏单元格 {}号怎样规范 java se 有什么用?
(byte) 192, (byte) 168, (byte) 0, (byte) 1};
这句话已经将超出byte范围的值强制转换了
(byte) 192, (byte) 168, (byte) 0, (byte) 1};
这句话已经把超出byte范围的值强制转换了
public static void byte2int() {
byte addr[] = new byte[] {
(byte) 192, (byte) 168, (byte) 0, (byte) 1
};
String s = "";
for (int j = 0; j < addr.length; j++) {
int a = addr[j];
if (a < 0) {
a = 256 + a;
}
s += a + "."; }
System.out.println(s); }
{
byte addr[] = new byte[]
{ (byte) 192, (byte) 168, (byte) 0, (byte) 1 };
StringBuffer buff = new StringBuffer();
for (int j = 0; j < addr.length; j++)
{
buff.append("." + (addr[j] & 0xff));
}
String sip = buff.substring(1);
System.out.println(sip);
}
========================================
麻烦同志。如果把“.”放在后面,你什么时候删除?
放在前面最好。buff.substring(1);
看清楚再回复好吗?