你的逻辑有点问题:在new string的时候,jre会检测byte数组的内容。它发现你写的,它不认识,所以会部用?代替了

解决方案 »

  1.   

    因为在构建String的时候会采用平台缺省的编码格式将byte[]编码,在String里保存的是双字节的Char,在byte to string的转换过程中,会填充一些数据,但当你从字符串提取byte[]是会将填充的内容一起提取出来,也就是提取出来的byte[]是经过编码!
      

  2.   

    因为在构建String的时候会采用平台缺省的编码格式将byte[]编码,在String里保存的是双字节的Char,在byte to string的转换过程中,会填充一些数据,但当你从字符串提取byte[]是会将填充的内容一起提取出来,也就是提取出来的byte[]是经过编码!
      

  3.   

    我们首先不管你的程序对与否?
    你的意思我明白!
    比如说 String str = "hello";
           byte[] b = str.getBytes();
    则 数组b中存的是字符串str的byte值,即字符h的byte值是b[0],e是b[1],以此类推
    所以 (char)b[0] 是等于字符 h ,(char)b[1] 是等于 e ,以此类推
    现在懂了吗?为什么你看见一堆3F字符呢,那是你输出byte数组时他自动转化成16进制啦
    ^_^!
      

  4.   

    也就是说byte数组中的每一个元素保存的是每一个字符的ASCII码,你可以查查看!
      

  5.   

    那该怎样才能把byte[] b=str.getBytes()的值变为8位的呢?
    (我的意思是说通过怎样的方法将str.getBytes()的值整体都变成8位呢?)几位能说清楚些吗?