如果放在数组a中new String(a,"ISO8859_1");
试试看
试试看
解决方案 »
- DatagramPacket处理中文字符
- ----------------》怎样实现鼠标指针的移动《-----------------
- JComboBox 事件 怎么只由最开始和最终选中的值来变化,中间过程不变
- 如何读写剪贴板clipboard中混合着string和image的内容
- 字符串替换
- 如何把数据存入外存?
- jcreator想打点能提示出方法名和属性的那个功能怎么没有
- m个相同的苹果,放在n个相同的盘子中,求有多少种结果
- jdbc可以访问另一台机器的mysql吗?
- 有那位大侠知道,在jbuilder下如何设置javadoc,让jbuilder自动产生文档
- 这个问题怎么做呢,谢谢~
- 请教个IE的问题,为何不能右键弹出?
String str = null;
mydata = ……;//
for(int i=0;i < mydata.length; i++){
str = str + (char)mydata[i];
}
比较傻,但有效
“-128”肯定是“?”啦!
你到底要干什么?
你是不是想要这样啊: byte mydata[];
String str = null;
String allStr=null;
mydata = ……;//
for(int i=0;i < mydata.length; i++){
str =(new Integer(mydata[i])).toString;
allStr=new String(allStr+str);
}
最后,如果你的字节数组存的都是-128,那么allStr将是:
-128-128-128.........
byte tt[]=new byte[2];
tt[0]=-128;
tt[1]=-128;
String s=new String(tt);//这里试过很多编码类型都没用。
byte aa[]=s.getBytes();
System.out.println(new String(aa));输出是??。请问这种失真现象是否能解决?
String str = new String(b);
str = new String(str.getBytes("iso-8859-1"),"GB2312");
写了一个笨办法,呵呵,肯定有比这简单的方法吧
我还是没搞明白你想干什么。
byte tt[]=new byte[4];
tt[0]=-127;
tt[1]=-127;
tt[2]=-127;
tt[3]=-127;
String s=new String(tt);
System.out.println(s);
byte aa[]=s.getBytes();
System.out.println(aa[0]);
System.out.println(aa[1]);
System.out.println(aa[2]);
System.out.println(aa[3]);
System.out.println(new String(aa));将输出:
亖亖
-127
-127
-127
-127
亖亖同样,你在byte tt[]里赋值从-1到-127都可以得到类似结果
但是-128不同:
byte tt[]=new byte[4];
tt[0]=-128;
tt[1]=-128;
tt[2]=-128;
tt[3]=-128;
String s=new String(tt);
System.out.println(s);
byte aa[]=s.getBytes();
System.out.println(aa[0]);
System.out.println(aa[1]);
System.out.println(aa[2]);
System.out.println(aa[3]);
System.out.println(new String(aa));结果是:
??
63
63
并且JAVA提示异常:
Exception ... java.lang.ArrayIndexOutOfBoundsException:2
异常原因是没有aa[2]可以显示,数组已越界。这就是-128的特殊性:-1到-127的byte转换为
String是每双字节转换为一个我们所不认识的汉字,但两个-128转换成了1个?号,最终再转换
回byte时造成数组越界
以上各位所举的例子还是没有解决这个问题.
int unsignedByte = signedByte < 0 ? signedByte + 256 : signedByte;
这样大概就能识别字符了,在做转化的处理就方便了,你先试试。
byte[]=125呢还是byte[]=-131?
当然你的思路值得借鉴
哎,没救了
int i = b>= 0 ? b : 256+b
从<Java网络编程》里看的
没看清,这个帖子回了两次,厚厚,不好意思~java没有无符号类型,只能用相同位数的int代替了,只要你清楚使用的是有符号还是无符号的,一般没有多大问题,反过来就不好说了,不过没有那样用的吧。例如:
byte[] input = new byte[10];
for (int i = 0;i < input.length;i++) {
int b = in.read();
if (b == -1) break;
input[i] = (byte)b;
}