util online getencoder encodetostring codificacion array java grails encoding groovy base64

online - java.util.base64 jar



Codificación Base64 en Java/Groovy (4)

¿Cuál es la forma correcta de convertir un byte [] a una cadena Base64 en Java? Mejor aún sería Grails / Groovy porque me dice que la función encodeAsBase64() está en desuso. No se recomienda el uso del paquete sun.misc.BASE64Encoder y genera una cadena de tamaño diferente en algunas plataformas de Windows.



Implementa tu propio método así :)

public class Coder { private static final String base64code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; public static String encodeAsBase64(String toEncode) { return encodeAsBase64(toEncode.getBytes()) } public static String encodeAsBase64(byte[] toEncode) { int pos = 0; int onhand = 0; StringBuffer buffer = new StringBuffer(); for(byte b in toEncode) { int read = b; int m; if(pos == 0) { m = (read >> 2) & 63; onhand = read & 3; pos = 1; } else if(pos == 1) { m = (onhand << 4) + ((read >> 4) & 15); onhand = read & 15; pos = 2; } else if(pos == 2) { m = ((read >> 6) & 3) + (onhand << 2); onhand = read & 63; buffer.append(base64code.charAt(m)); m = onhand; onhand = 0; pos = 0; } buffer.append(base64code.charAt(m)); } while(pos > 0 && pos < 4) { pos++; if(onhand == -1) { buffer.append(''=''); } else { int m = pos == 2 ? onhand << 4 : (pos == 3 ? onhand << 2 : onhand); onhand = -1; buffer.append(base64code.charAt(m)); } } return buffer.toString() }

}


La forma preferida de hacer esto en Groovy es:

def encoded = "Hello World".bytes.encodeBase64().toString() assert encoded == "SGVsbG8gV29ybGQ=" def decoded = new String("SGVsbG8gV29ybGQ=".decodeBase64()) assert decoded == "Hello World"


Podría usar la biblioteca de código abierto Base64Coder

import biz.source_code.base64Coder.Base64Coder @Grab(group=''biz.source_code'', module=''base64coder'', version=''2010-09-21'') String s1 = Base64Coder.encodeString("Hello world") String s2 = Base64Coder.decodeString("SGVsbG8gd29ybGQ=")