2 eyebrows cs Eyebrows_cs 于 2015.06.19 16:26 提问

Android Base64 解码异常
 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);

注释部分给出了例子,这到底是为何?

6个回答

Eyebrows_cs
Eyebrows_cs   2015.06.29 01:02
已采纳

感谢各位的回答,最终问题发现为 在C/C++中,unsigned char 8位默认不包含符号位。

但在Java中则是,7+1位符号位。所以在取出解码时,需要 & 0xFF。

wang84100
wang84100 没太看懂。什么意思
一年多之前 回复
dalor
dalor   2015.06.19 16:36

jo是json对象吗?
异常是什么?
确定异常不是json抛的?

dalor
dalor   2015.06.19 16:43

另外,你这个方法是解密,你是想加密吧?

dalor
dalor   2015.06.19 16:55

我试了一下,应该是bad base 64的异常。
你看一下,被解密的字符串,是不是非法的base64字符串,所以,不能解析成功。

wang84100
wang84100 我怎么能知道他是不是非法的base64位的
一年多之前 回复
oyljerry
oyljerry   Ds   Rxr 2015.06.19 17:52
 // 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");
hu121618hu
hu121618hu   2015.12.02 16:15

能发个完整代码吗?我也遇到同样的问题

Csdn user default icon
上传中...
上传图片
插入图片