java.lang.IllegalArgumentException: mauvais en base 64
Je suis en train de coder et décoder une Chaîne à l'aide de android.util.Base64, mais il donne une mauvaise base-64 erreur.
Le code, le problème est:
private byte[] base64ToByte(String str) throws IOException {
Log.i("encription", str);
byte[] returnbyteArray = Base64.decode(str, Base64.URL_SAFE);
return returnbyteArray;
}
L'erreur logcat est:
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)
L'entrée(la Chaîne str à partir du code ressemble à ceci:
08-09 13:02:18.539: I/encription(29827): 26.919047981500626
C'est une double converti en chaîne de caractères, à l'aide de:
String.valueOf(number)
L'erreur est persistante avec tous encodage des drapeaux (par DÉFAUT, NO_WRAP, etc), toute aide serait aprécié, je vous remercie.
- Pouvez-vous s'il vous plaît poster la Chaîne de valeur?
- Essayez de changer de
Base64.NO_WRAP
- La valeur de la chaîne est comme indiqué 29.919047981500626 qui est la valeur de Chaîne de caractères str, et comme je l'ai dit, j'ai tout essayé (NO_WRAP, par DÉFAUT, etc, etc) chaque drapeau
Vous devez vous connecter pour publier un commentaire.
Vous essayez de décoder
26.919047981500626
qui vous ne pouvez pas. Parce que c'est pas valide chaîne encodée en base64.Lors de la mise en cette ligne base64 decoder, il donne cette erreur:
Mise à jour:
Si vous voulez savoir la validité de la mise en forme d'un encodé en base64 de la chaîne, prendre un coup d'oeil à la table dans le article de wikipedia et aussi cette réponse qui montre une base64 validateur de code en C#.
Il m'a frappé, en tout cas, votre de partager les données & les encoder, décoder ensuite il d'abord avant de le remettre ensemble.. Bêtement je faisais décoder après le regroupement de données qui m'a laissé des "bad-base-64" comme chaque bloc de coder les données avaient fichier enders(==).
C'est Lienest à portée de main de toute façon à valider le codage et le décodage.
supprimer le préfixe " data:image/png;base64, ", obtenir la chaîne de après "data:image/png;base64,", il peut décoder