在Java中char和byte锁占用的字节数是不一样的,就比如byte的-1,和int的-1就差别很大,所以在转化的时候要进行&运算,比如转化-76的时候应该是-76&0xFF,

解决方案 »

  1.   

    大哥,您把正确的代码给注释掉了,  import java.nio.ByteBuffer;
    import java.nio.CharBuffer;
    import java.nio.charset.Charset;public class mytest { public static void main(String[] args) {
    // TODO Auto-generated method stubbyte[] bytes = new byte[]{-76, -1, 32, 30, 36};char[] chars = getChars(bytes);byte[] bytes2= getBytes(chars);char[] chars2 = getChars(bytes2);} /** char转byte */
    public static byte[] getBytes(char[] chars) {



     int len = chars.length;
     byte[] bytes = new byte[len];

     for(int i=0;i<len;i++){
     bytes[i]= (byte)(chars[i]);
     }
     return bytes;
    } /** byte转char */
    public static char[] getChars(byte[] bytes) {  int len = bytes.length;
     char[] chars = new char[len];

     for(int i=0;i<len;i++){
     chars[i]= (char)(bytes[i] & 0xff);
     }
     return chars; }
    }