我们知道,java中的byte是带符号,而c#中的byte是无符号的,现在问题来了。一个字符串,在java下面,"abc".getBytes(), 得到一个字节数组,现在我要在C#下面把这个字节数组还原为字符串"abc",如何做啊???高人指点一下。

解决方案 »

  1.   

    当然当这个字符串是"abc"的时候,java下和C#中得到的字节数组是一样的。
    但当字符串是"中国人"的时候,得到的字节数组就不一样了。
      

  2.   

    byte [] a = new byte[3];
    byte [0] = 31;
    byte [1] = 32;
    byte [2] = 33;
    UTF8Encoding temp = new UTF8Encoding(true);
    temp.getstring(byte);
      

  3.   

    不管你采用什么样的编码,java中的byte还是带符号,而c#中的byte还是无符号的
      

  4.   

    str = System.Text.ASCIIEncoding.Default.GetString(myBytes);
      

  5.   

    byte要用无符号得吧?一般是用ASCII码得形式存储,用有符号得来存,那少了一半的符号啊
      

  6.   

    System.Text.Encoding.Default.GetString(myBytes);
      

  7.   

    yezie(椰子) ,这种方法不行啊
      

  8.   

    java下面的byte,确实是有符号的。
      

  9.   

    在windows上java默认的是这个:
    Encoding.GetEncoding("iso8859-1")
      

  10.   

    这个我没有试过,但是如果把java下的“中国人”打印出来是什么呢?这里是C#的结果:
    中 = 20013
    国 = 22269
    人 = 20154
      

  11.   

    这个问题和编码已经没有关系了,关键的问题是:
    java中的byte是带符号,而c#中的byte是无符号的
      

  12.   

    http://blog.csdn.net/ruixing123/archive/2005/04/08/339788.aspxCoding Change
      

  13.   

    你先把java里面输出的byte[]内容贴出来嗯
    就"中文人"这三个字的应该是iso8859-1没错
    byte有无符号不影响二进制内容
      

  14.   

    楼主,怎么获得这个有符号字节数组的?MemoryStream ms = new MemoryStream(bytes1);//从中创建当前流的无符号字节数组。 
    byte[] bytes2 = ms.ToArray();              //从流中获得字节数组。
      

  15.   

    不晓得 JAVA 中能不能用 unsigned byte