String rate64 = jo.getString("value2");
// encoded example value "AJIAlg=="
// decoded right value <00,92,00,96>
// decoded wrong value <0, -110, 0, -106>
byte[] orgin = android.util.Base64.decode(rate64.getBytes(), android.util.Base64.DEFAULT);
注释部分给出了例子,这到底是为何?
感谢各位的回答,最终问题发现为 在C/C++中,unsigned char 8位默认不包含符号位。
但在Java中则是,7+1位符号位。所以在取出解码时,需要 & 0xFF。
jo是json对象吗?
异常是什么?
确定异常不是json抛的?
另外,你这个方法是解密,你是想加密吧?
我试了一下,应该是bad base 64的异常。
你看一下,被解密的字符串,是不是非法的base64字符串,所以,不能解析成功。
// Sending side
byte[] data = text.getBytes("UTF-8");
String base64 = Base64.encodeToString(data, Base64.DEFAULT);
// Receiving side
byte[] data = Base64.decode(base64, Base64.DEFAULT);
String text = new String(data, "UTF-8");
能发个完整代码吗?我也遇到同样的问题