从UDP传过来一个128(0x80),转换成byte后变成了63(0x3f) ??
我看你的转换有问题,把你转换的代码写出来看看吧。

解决方案 »

  1.   

    确切的说不是字节数组的问题,UDP传过来没错,还是0x80,错在下面
    String str = new String(byte[],"ISO-8859-1");
    后来将str传给其他的函数后
    byte[] b = str.getBytes();
    这时候发现0x80->0x3f,估计是"ISO-8859-1"编码的问题,但是不指定该编码
    直接String str = new String(byte[]);(默认编码为Ascii)
    发现str是""的,没有东西,估计是Ascii码没有负数,而0x80是个负数的缘故请问怎么样我才能从str得到正确的byte
      

  2.   

    0x3f表示无法解析,显示就是问号
    比如一个中文字符,作了2次gb2312转码
    就会出现这种情况,显示出来就是乱码一般情况下,程序编译的时候,带上参数 -encoding 8859_1
    而程序中进行gb2312转码,这样避免2次转码
      

  3.   

    byte[] b = your input
    String str = new String(b,"UTF-8");
    byte[] b2 = str.getBytes("UTF-8");
      

  4.   

    0x80用UTF-8编码变成了0x01
    这样 byte[] b = new byte[]{0x80};
    String str = new String(b,"UTF-8");
    b = str.getBytes("UTF-8");
    前后两个中的值不一样了