Su misión es escribir una función / programa que convierta una matriz de bytes (es decir, una matriz de enteros de 0 a 255), en base64.
El uso de codificadores base64 integrados no está permitido.
La implementación de base64 requerida es RFC 2045. (usando "+", "/", y relleno obligatorio con "=")
¡El código más corto (en bytes) gana!
Ejemplo:
Entrada (int array): [99, 97, 102, 195, 169]
Salida (cadena): Y2Fmw6k=
1 2
el argumento66
?=
para el relleno se reduce a 4. ¿Cuál desea? ¿O quieres una variante no estándar que no tenga longitudes máximas de línea?Respuestas:
JavaScript, 177
187198caracteresPara agregar saltos de línea,
\r\n
después de cada 76 caracteres, agregue 23 caracteres al código:Código de demostración:
fuente
Ensamblado x86 de 32 bits, 59 bytes
Código de bytes:
Desmontaje
Llame a b64encode con esi apuntando al búfer de entrada, edi apuntando al búfer de salida.
Podría hacerse aún más pequeño si no se utiliza el ajuste de línea.
fuente
perl, 126 bytes
lee stdin, salidas a stdout
sin golf:
fuente
\r\n
.Perl, 147 bytes
La función toma una lista de enteros como entrada y emite la cadena, codificada en base64.
Ejemplo:
huellas dactilares
Sin golf:
Versión que también visualiza los pasos intermedios:
Salida:
Pruebas:
Las cadenas de prueba provienen del ejemplo en la pregunta de los ejemplos en el artículo de Wikipedia para Base64 .
Prueba de salida:
fuente
\r\n
.Python, 234 caracteres
fuente
\r\n
.GolfScript, 80 (77) bytes
Lo anterior se ajustará exactamente a 76 caracteres en una línea, excepto la última línea. Todas las líneas están terminadas por CRLF.
Tenga en cuenta que RFC 2045 especifica una longitud de línea máxima variable de 76 caracteres, por lo que a costa de una salida bonita, podemos guardar 3 bytes adicionales.
Lo anterior imprimirá un carácter por línea, excepto la última línea, que puede contener 0, 1 o 2
=
caracteres. GolfScript también agregará un LF final que, de acuerdo con RFC 2045, debe ser ignorado por el software de decodificación.Ejemplo
Cómo funciona
fuente
PHP , 200 bytes
Pruébalo en línea!
Podrías reemplazar la cadena
("$s+/=")
con una matrizarray_merge(range(A,Z),range(a,z),range(0,9),["+","/","="])
Solo para comparar qué número de bytes puede alcanzar con una función incorporada no permitida
PHP , 45 bytes
Pruébalo en línea!
fuente
JavaScript (ES6), 220B
Si su navegador no es compatible con ES6, puede probar con esta versión (262B):
f([99, 97, 102, 195, 169])
vuelve"Y2Fmw6k="
.fuente
\r\n
?Python -
310333Algo sin golf:
Ejemplo :
El módulo base64 incorporado de Python solo se usa en este ejemplo para garantizar que la
e
función tenga la salida correcta, lae
función en sí misma no la está usando.fuente
\r\n
.Jalea , 38 bytes
Pruébalo en línea!
Como (casi) cualquier otra respuesta cubre el requisito RFC2045 de "como máximo 76 caracteres por línea con final de línea
\r\n
", lo seguí.Cómo funciona
fuente
ṃØbṙ1¤
es demasiado larga para una operación simple.0,0,0
.