byte[]转String再转会byte[]问题

iamcxl369 2013-08-16 07:05:58



//正确的结果
String strOriginal = "csdn xxxx";
byte[] in = strOriginal.getBytes();
byte[] out= myUtils.encode(in);
byte[] deout = myUtils.decode(out);
String strDecode = new String(deout);
Log.e(TAG, strDecode);

//错误的结果
String strOriginal = "csdn xxxx";
byte[] in = strOriginal.getBytes();
byte[] out= myUtils.encode(in);
String strEncode = new String(out); //字节数组转换成String后格式好像变了
byte[] deout = myUtils.decode(strEncode.getBytes());
String strDecode = new String(deout);
Log.e(TAG, strDecode);

----------
不知道字节数组--->String--->字节数组,过程中都做了什么事情导致结果不一致?????
...全文
239 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamcxl369 2013-08-19
  • 打赏
  • 举报
回复
引用 7 楼 iamcxl369 的回复:
[quote=引用 4 楼 fudongrifdr 的回复:] 解决方案就是用Base64编码一下
麻烦详解[/quote] 感谢,很简单的用法,不用详解了!!
iamcxl369 2013-08-18
  • 打赏
  • 举报
回复
引用 4 楼 fudongrifdr 的回复:
解决方案就是用Base64编码一下
麻烦详解
mfanw 2013-08-17
  • 打赏
  • 举报
回复 1
引用 2 楼 fudongrifdr 的回复:
在你new String之前字符数组是经过你编码的,但是当你new String会采用平台默认的字符集解码,接着你在调用.getBytes()又用平台默认的字符集编码。。所以在你decode时,已经不是你之前的编码了,变成了平台默认编码
正解。我也刚刚遇到这个问题。很多情况是双方的编码不一致搞出来的这个问题。 一个解决方法是双方约定都用 同一个编码,比如GBK。你就可以 new String(content, "GBK")了。 也有如5楼所述的问题出现。比如双方约定的GBK编码,但是GBK字符集中没有的字符去用GBK来new出来就乱了 如果要保证 byte[] -> String -> byte[] 不失真,一定要用字符集内的字符。
马达马达达 2013-08-17
  • 打赏
  • 举报
回复 1
我觉得也可以吧加密出来的byte[]转成数字字符串 比如byte[] b = {97,98,99};转成String str = "979899" 解密先把"979899" 转成byte[] b = {97,98,99}再解密。
末日哥 2013-08-17
  • 打赏
  • 举报
回复
解决方案就是用Base64编码一下
iamcxl369 2013-08-17
  • 打赏
  • 举报
回复
请教:原因应该是两位所说的那样,因为我现在必须把加密的结果保存为字符串 然后再把该加密的字符串进行解密操作. -------- 有什么方案可以解决这个问题?
末日哥 2013-08-16
  • 打赏
  • 举报
回复
在你new String之前字符数组是经过你编码的,但是当你new String会采用平台默认的字符集解码,接着你在调用.getBytes()又用平台默认的字符集编码。。所以在你decode时,已经不是你之前的编码了,变成了平台默认编码
马达马达达 2013-08-16
  • 打赏
  • 举报
回复
加密解密问题。。。 最好中间不要转成string,像new String(xxx)这种操作很容易出问题 上面的new String(out)其实就等于new String(out, utf8)这里红色的是eclipse的默认编码,我的是utf8。 你把byte数组加密后得到的新数组就不满足utf8的编码规则了,再拿来new String(),方法内就会对编码强行调整,整出一堆乱七八糟的东西。 你可以把out和strEncode.getBytes()两个数组输出对比一下就清楚了,我就懒得试了

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧