byte [] yy={0x44,0x45,0x46};
String xxx=new String(yy);
System.out.println(xxx);
正确;
---------------------------------------------------
byte [] yy={0x44,0x45,0x86};//值大了
String xxx=new String(yy);
System.out.println(xxx);
通不过编译;
---------------------------------------------
我想实现一个3字节的字符串xxx,三个字节的值依次为:0xdd 0xff 0xee;
程序怎么写?

解决方案 »

  1.   

    byte类型范围是-128~127,0x--表示的十六进制数默认是int型的,所以越界了。实际你的0xff是负数(-1)。
    byte[] yy = {(byte)0xee, (byte)0xff, (byte)0xdd}; 应该就行了。
      

  2.   

    (0x86 == 134) > 127
    这个值无法赋值给byte类型变量。
      

  3.   


    >127无法赋值给byte类型变量。
      

  4.   

    Java 中的字符串是 unicode 字符串,直接
    String xxx = new String(yy)
    实际上默认是指的,new String(yy, "GB2312"),但是 [dd,ee,ff] 是不正确的 GB2312 编码字节,因此,上面的语句得不到你想要的字符串。如果你想要 3 个char 的字符串,你应该用
    String xxx = new String(yy, "iso-8859-1")关于这一点的更详细说明,推荐参考一篇文章:
    http://www.regexlab.com/zh/encoding.htm