java.lang.IllegalArgumentException:bad base-64

时间:2014-08-09 10:17:46

标签: android encoding base64 illegalargumentexception

我正在尝试使用android.util.Base64对String进行编码和解码,但它会产生错误的base-64错误。

有问题的代码是:

private byte[] base64ToByte(String str) throws IOException {

    Log.i("encription", str);
    byte[] returnbyteArray = Base64.decode(str, Base64.URL_SAFE);



    return returnbyteArray;
}

错误logcat是:

08-09 13:02:18.589: E/AndroidRuntime(29827): Process: com.example.maptest, PID: 29827
08-09 13:02:18.589: E/AndroidRuntime(29827): java.lang.IllegalArgumentException: bad base-64
08-09 13:02:18.589: E/AndroidRuntime(29827):    at android.util.Base64.decode(Base64.java:161)
08-09 13:02:18.589: E/AndroidRuntime(29827):    at android.util.Base64.decode(Base64.java:136)
08-09 13:02:18.589: E/AndroidRuntime(29827):    at android.util.Base64.decode(Base64.java:118)
08-09 13:02:18.589: E/AndroidRuntime(29827):    at com.example.maptest.security.Encription.base64ToByte(Encription.java:116)
08-09 13:02:18.589: E/AndroidRuntime(29827):    at com.example.maptest.security.Encription.encode(Encription.java:103)
08-09 13:02:18.589: E/AndroidRuntime(29827):    at android.os.Handler.dispatchMessage(Handler.java:102)
08-09 13:02:18.589: E/AndroidRuntime(29827):    at android.os.Looper.loop(Looper.java:136)
08-09 13:02:18.589: E/AndroidRuntime(29827):    at android.app.ActivityThread.main(ActivityThread.java:5081)
08-09 13:02:18.589: E/AndroidRuntime(29827):    at java.lang.reflect.Method.invokeNative(Native Method)
08-09 13:02:18.589: E/AndroidRuntime(29827):    at java.lang.reflect.Method.invoke(Method.java:515)
08-09 13:02:18.589: E/AndroidRuntime(29827):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:781)
08-09 13:02:18.589: E/AndroidRuntime(29827):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-09 13:02:18.589: E/AndroidRuntime(29827):    at dalvik.system.NativeStart.main(Native Method)

输入(代码中的str String)如下所示:

08-09 13:02:18.539: I/encription(29827): 26.919047981500626

使用:

将其转换为字符串
String.valueOf(number)

错误在所有编码标志(DEFAULT,NO_WRAP等)中都是持久的,任何帮助都会被贬低,谢谢。

3 个答案:

答案 0 :(得分:5)

您正在尝试解码 26.919047981500626,但您不能。因为它是有效的base64编码字符串。

当放入this online base64 decoder时,会出现此错误:

  

输入不是有效的Base-64字符串,因为它包含非基数64   字符,两个以上的填充字符或非法字符   在填充字符中。

<强>更新

如果您想知道编码的base64字符串的有效格式,请查看wikipedia articlethis answer中的表格,其中显示了C#中的base64验证码。

答案 1 :(得分:0)

它击中了我,如果无论如何你正在拆分数据&amp;对它进行编码,然后在将它重新组合之前对其进行解码。愚蠢的是,在对数据进行整理之后,我正在进行解码,因为每个编码数据块都有文件enders(==)。“ p>

无论如何,这都是Link验证编码和解码的方便。

答案 2 :(得分:0)

删除前缀字符串“ data:image / png; base64”,获取“ data:image / png; base64”之后的字符串,即可解码