java中byte数组转换成字符串的问题
org.apache.commons.io.IOUtils类有个toString(byte[])方法可以将byte[]转换成字符串,但是
现在org.apache.commons.io.IOUtils.toString(byte[])是@Deprecated的了,也就是不赞成使用。
如下代码在将byte数组new byte[] { -112 }在byte[]和String之间来回转换,但是转换后出问
题了:
byte[] buffer = new byte[] { -112 };
String str = org.apache.commons.io.IOUtils.toString(buffer);
byte[] buffer2 = str.getBytes();
System.out.println(org.apache.commons.lang.ArrayUtils.toString(buffer));
System.out.println(org.apache.commons.lang.ArrayUtils.toString(buffer2));
二个System.out的输出分别是:
{-112}
{63}
byte数组{-112}转换成String后,再转换成byte数组,但是不一致。Why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
IOUtils.toString(byte[])实际上就是调用了new String(byte[]).
上面的问题解决了,转换的时候加上ISO-8859-1编码就可以。
commons-io 推荐使用 new String(byte[]...) 来替换 toString(byte[]...)