String s=new String(buf,0,3);
int i=Integer.parseInt(s);

解决方案 »

  1.   

    buf[0]-buf[3]存的是int啊,不是string,我试了,这样程序执行有问题。
    譬如这个int是100,new String(buf,0,3)返回的string是个乱码,而不是字符串"100",
    所以parseInt执行也就出错了:(
    而且java好奇怪,出错也不会吭声,就是不执行后面的语句了,程序运行起来好像正常,
    是不是要捕捉异常才行?
      

  2.   

    你自己去算一下偏移就可以啦,就是你自己将buf[0]-buf[3]凑成数字
    你可能用DataInputStream也可以(这个我没有测试过)int num = buf[0] << 24 + buf[1] << 16 + buf[2] << 8 + buf[3]
      

  3.   

    另外,Java的出错处理机制是比较好的
    我相信是你的代码直接就放弃处理错误了,Integer.parseInt(s);需要抛出NumberFormatException在程序中,你需要catch
    try {
      num = Integer.parseInt(s);
    }catch(NumberFormatException ex) {
      //这里你要加入你自己的处理
    }
      

  4.   

    很菜的方法(效率低):
    String s = Byte.toString(buf[0]) + Byte.toString(buf[1]) + ... + Byte.toString(buf[n]); //(如果太多的话用StringBuffer)
    int i = Integer.parseInt(s);
      

  5.   

    谢谢各位,我心里有底了,我研究一下DataInputStream看看。