思归,孟子e章,速马,秋枫,关于byte[] 的问题,解决了给分200 我们知道,java中的byte是带符号,而c#中的byte是无符号的,现在问题来了。一个字符串,在java下面,"abc".getBytes(), 得到一个字节数组,现在我要在C#下面把这个字节数组还原为字符串"abc",如何做啊???高人指点一下。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当然当这个字符串是"abc"的时候,java下和C#中得到的字节数组是一样的。但当字符串是"中国人"的时候,得到的字节数组就不一样了。 byte [] a = new byte[3];byte [0] = 31;byte [1] = 32;byte [2] = 33;UTF8Encoding temp = new UTF8Encoding(true);temp.getstring(byte); 不管你采用什么样的编码,java中的byte还是带符号,而c#中的byte还是无符号的 str = System.Text.ASCIIEncoding.Default.GetString(myBytes); byte要用无符号得吧?一般是用ASCII码得形式存储,用有符号得来存,那少了一半的符号啊 System.Text.Encoding.Default.GetString(myBytes); yezie(椰子) ,这种方法不行啊 java下面的byte,确实是有符号的。 在windows上java默认的是这个:Encoding.GetEncoding("iso8859-1") 这个我没有试过,但是如果把java下的“中国人”打印出来是什么呢?这里是C#的结果:中 = 20013国 = 22269人 = 20154 这个问题和编码已经没有关系了,关键的问题是:java中的byte是带符号,而c#中的byte是无符号的 http://blog.csdn.net/ruixing123/archive/2005/04/08/339788.aspxCoding Change 你先把java里面输出的byte[]内容贴出来嗯就"中文人"这三个字的应该是iso8859-1没错byte有无符号不影响二进制内容 楼主,怎么获得这个有符号字节数组的?MemoryStream ms = new MemoryStream(bytes1);//从中创建当前流的无符号字节数组。 byte[] bytes2 = ms.ToArray(); //从流中获得字节数组。 不晓得 JAVA 中能不能用 unsigned byte 字符串转换枚举typeof(WeekDay)什么意思? 求二个正则写法 怎样将 SqlDataReader 读取的数据转换为 int 类型 请问这两个的JS代码应该怎么写? 关于打印机打印EXCEL文档分页时候的一个问题 这个是什么问题,见过没有?高手帮忙! 后台CS中JavaScript问题? treeview为什么不能定位到子节点啊? 急需,网络媒体播放及管理的解决方案和代码 如何用log4net输出多个信息 在线求教,图像打印问题! .sys 和 .vxd的程序,我怎麼在c#中調用裡面的函數?
但当字符串是"中国人"的时候,得到的字节数组就不一样了。
byte [0] = 31;
byte [1] = 32;
byte [2] = 33;
UTF8Encoding temp = new UTF8Encoding(true);
temp.getstring(byte);
Encoding.GetEncoding("iso8859-1")
中 = 20013
国 = 22269
人 = 20154
java中的byte是带符号,而c#中的byte是无符号的
就"中文人"这三个字的应该是iso8859-1没错
byte有无符号不影响二进制内容
byte[] bytes2 = ms.ToArray(); //从流中获得字节数组。