本帖最后由 wudeaaa 于 2010-03-02 12:55:42 编辑

解决方案 »

  1.   

    你把"192.168.0.1".getBytes()打出来,就知道为什么了
      

  2.   

    byte 是一个字节的, 它的取值范围很小,你前两个下标都超出了它的取值范围,所以输出异常,后两个下标正常,所以输出正常   要不改成char[] addr=new char[];   这个是字符型的两个各有所长,也都有缺陷,有谨慎使用
      

  3.   

    (byte) 192, (byte) 168  超过byte范围了 
      

  4.   

    byte addr[] = new byte[] {
                    (byte) 192, (byte) 168, (byte) 0, (byte) 1}; 
    这句话已经将超出byte范围的值强制转换了
      

  5.   

    byte addr[] = new byte[] {
                    (byte) 192, (byte) 168, (byte) 0, (byte) 1};
    这句话已经把超出byte范围的值强制转换了
      

  6.   

    byte的范围是-128到127,127+1=-128,依次类推127+(192-127)=-64,127+(168-127)=-88
      

  7.   


    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); }
      

  8.   

    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);
    }
      

  9.   

    buff.append((addr[j] & 0xff)+".");
      

  10.   

    java爱好者的免费学习视频、实战视频下载列表  参见博客http://user.qzone.qq.com/312311285/blog/1264432325
      

  11.   


    ========================================
    麻烦同志。如果把“.”放在后面,你什么时候删除?
    放在前面最好。buff.substring(1); 
    看清楚再回复好吗?