【发布时间】:2013-10-23 15:42:28
【问题描述】:
我正在尝试将 byte[] 转换为 String,然后将 String 转换为 byte[]。我检索到的不是同一个 byte[] 数组。
byte[] bArray1 = myFunction();
System.out.println("array1 = " + bArray1.toString());
String str = new String(bArray1);
byte[] bArray2 = str.getBytes();
System.out.println("array2 = " + bArray2.toString());
执行后我得到:
array1 = [-15, -87, -44, 61, -115, 23, -3, 75, 99, 36, -49, 21, -41, -63, 100, -49]
array2 = [-17, -65, -67, -17, -65, -67, 61, -17, -65, -67, 23, -17, -65, -67, 75, 99, 36, -17, -65, -67, 21, -17, -65, -67, -17, -65, -67, 100, -17, -65, -67, -17, -65, -67]
为什么会发生,我怎样才能得到相同的数组?
这适用于我的电脑,但不适用于我的安卓:
byte[] bArray1 = myFunction();
String str = Base64.encodeToString(bArray1, Base64.DEFAULT);
byte[] bArray2 = Base64.decode(str, Base64.DEFAULT);
我看过Hex-encoded String to Byte Array的文章。 但是android没有Hex类。
已编辑
对不起,我错了,Base64 不起作用。
这是在 android 2.3.3, 2.3.4, 4.2, 4.3 上测试的,它可以工作:
byte[] bArray1 = myFunction();
String str = Base64.encodeToString(bArray1, Base64.DEFAULT);
byte[] bArray2 = Base64.decode(str, Base64.DEFAULT);
【问题讨论】:
-
它们是同一字符串的不同字符编码
-
基于 tom 的评论,您是否正在处理从 myFunction() 返回的 byte[] 中的实际 ASCII/可打印数据?你想通过转换做什么?
-
String to Byte Array的可能重复
标签: android arrays string byte