Estoy tratando de codificar y decodificar una Cadena con android.util.Base64, pero da una mala base-64 error.

El código con el problema es:

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

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



    return returnbyteArray;
}

El error logcat es:

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)

La entrada(str Cadena desde el código) se parece a esto:

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

Es un doble convierte en una cadena, utilizando:

String.valueOf(number)

El error es persistente con la codificación de todos los indicadores (por DEFECTO, NO_WRAP, etc), cualquier ayuda sería apreciada, gracias.

  • Puede usted por favor enviar la Cadena de valor?
  • Trate de cambiar a Base64.NO_WRAP
  • La cadena de valor es el indicado 29.919047981500626 que es el valor de la Cadena str, y como ya he dicho he probado de todo (NO_WRAP, por DEFECTO, etc, etc) cada bandera

3 Comentarios

  1. 5

    Usted está tratando de decodificar 26.919047981500626 que usted no puede. Porque es no válido codificado en base64 de la cadena.

    Cuando se pone en esta línea base64 decodificador, da este error:

    La entrada no es válida en Base 64 de la cadena, ya que contiene una base no 64
    carácter, más de dos caracteres de relleno, o un carácter ilícito
    entre los caracteres de relleno.

    Actualización:

    Si quieres saber el formato válidos de una cadena base64 codificado, echa un vistazo a la tabla en la artículo de la wikipedia y también esta respuesta que muestra un base64 validador de código en C#.

    • Ok veo, pero ¿por qué no es válido cadena Base64? y si no ¿para qué puedo usar en lugar de arreglar este problema?
    • Ver mis actualizaciones. Pero todavía no entiendo lo que usted está tratando de lograr aquí… Si quieres un válido cadena codificada en Base64, acaba de poner una cadena arbitraria en este sitio para codificar para usted.
  2. 0

    Se me ocurrió que, si en cualquier caso, que el son de la división de los datos y aplicaciones; la codificación de los mismos, descodificar, a continuación, en primer lugar, antes de poner de nuevo juntos.. Estúpidamente me estaba haciendo decodificar después de la intercalación de datos que me dejó «mal-base-64» como cada bloque de datos de encode tenido archivo enders(==).

    Este es Enlacede todos modos es útil para validar la codificación y la decodificación.

  3. 0

    quitar el prefijo de la cadena » data:image/png;base64, «, obtener la cadena de después de «data:image/png;base64,», puede decodificar

    • Sírvanse explicar cómo funciona esto.

Dejar respuesta

Please enter your comment!
Please enter your name here