1.程序一里给出的byte对应不到ascii,有对应到的也是不可见字符,所以你的tt是空。
2.同理,程序二不用解释了。
3.取出的与原数值是不一样,因为byte的范围是-128-->127。
不管你尽管放心使用,写回去还是一样的。

解决方案 »

  1.   

    测试了一下:
                            byte[] bb = "test".getBytes();
                            for (int i = 0; i < bb.length; i++) {
                              System.out.println(bb[i]);                        }
                            String newString = new String(bb,0,4);
                            System.out.println(newString);
    一切正常,估计是数组元素值越界之类的问题。
    up一下
      

  2.   

    没有问题,你给那个byte数据赋一些不同的值,就可以看到结果了.
      

  3.   

    feiyuegaoshan(飞跃) 大大,同样的数据为何在程序2中string 又有值?
    3.取出的与原数值是不一样,因为byte的范围是-128-->127。
    不管你尽管放心使用,写回去还是一样的。
    我也想放心使用,但是对应取出的值为63,我想要-48或-24。这样根本没法使用。但是如果将数据全部改为负数,(我将8个byte都改为-48),取出来的byte就是正确的负数。而且我将试验代码复制到程序中,就在if(size != -1)里,这时string 又能够new一个新的字符串。stonegump(龙飞虎) 大大,不要全部是可见字符,你就用我的试验程序,数据改为                     aa[0] = 7;
    aa[1] =36;
    aa[2] =0;
    aa[3] =0;
    aa[4] =-48;
    aa[5] =22;
    aa[6] =3;
    aa[7] =32;
    取出时你就会发现bb[4]=63.
    我估计是系统不认识地字符全部改为63,即?。但如果我想把一个byte数组转换成字符串,(做参数传递用),然后再转换成byte数组,各个值不要变化,有没有办法?
    只要解决问题,分不够您开口,上限1000分 :),我所有的分了。
    大大们,帮忙呀。江湖救急!!!!!
      

  4.   

    问题的关键在这里:
    “我估计是系统不认识地字符全部改为63,即?。但如果我想把一个byte数组转换成字符串,(做参数传递用),然后再转换成byte数组,各个值不要变化,有没有办法?”
    你干吗非要转换成String,再当参数传?
    你直接修改函数,让函数接收byte[],就可以了,不要互相转来转去。