2012-04-25 22 views
49

¿Por qué tenemos codificación Base64? Soy un principiante y realmente no entiendo por qué ofuscaría los bytes en otra cosa (a menos que sea una encriptación). En uno de los libros que leí, la codificación Base64 es útil cuando la transmisión binaria no es posible. P.ej. Cuando publicamos un formulario, se codifica. ¿Pero por qué convertimos bytes en letras? ¿No podríamos simplemente convertir bytes en formato de cadena con un espacio intermedio? Por ejemplo, 00000001 00000004? O simplemente 0000000100000004 sin ningún espacio porque los bytes siempre vienen en par de 8?¿Cuál es el verdadero propósito de la codificación Base64?

+8

Porque acaba de convertir 1 byte en 8 en lugar de 3 en 4 como lo hace con base64 (si la memoria me sirve correctamente). El ancho de banda es finito. –

+0

Estás confundiendo bits (con 8 bits que haces un byte) y bytes, que pueden venir en cualquier tipo de agrupación. –

Respuesta

60

Base64 es una forma de codificar datos binarios en un conjunto de caracteres ASCII conocido en casi todos los sistemas informáticos, con el fin de transmitir los datos sin pérdida o modificación de los contenidos. Por ejemplo, los sistemas de correo no pueden tratar con datos binarios porque esperan datos ASCII (textuales). Entonces, si desea transferir una imagen u otro archivo, se corromperá debido a la forma en que maneja los datos.

Nota: la codificación base64 NO es una forma de encriptar, ni una forma de compactar datos. De hecho, una pieza de datos codificada en base64 es 1.333 ... veces más grande que la pieza de datos original. Es solo una forma de asegurarse de que no se pierdan ni modifiquen datos durante la transferencia.

+3

Los datos codificados de Base64 son exactamente 1,333 (3) veces mayores que los datos originales + 0-3 caracteres adicionales adicionales según la longitud del módulo de datos de entrada 4. Se debe a que cada carácter codificado en base64 almacena información de 6 bits (64 caracteres diferentes) – too

+1

tanto antes como después de los datos aún son binarios. entonces por qué los datos se pierden –

3

Base64 es una forma más o menos compacta de transmisión (codificación, de hecho, pero con el objetivo de transmitir) cualquier tipo de datos binarios.

Ver http://en.wikipedia.org/wiki/Base64

"La regla general es elegir un conjunto de 64 caracteres que es a la vez parte de un subconjunto común a la mayoría de las codificaciones, y también se puede imprimir."

Ese es un propósito muy general y la necesidad común es no perder más espacio de lo necesario.

Históricamente, se basa en el hecho de que existe un subconjunto común de (casi) todas las codificaciones utilizadas para almacenar caracteres en bytes y que muchos de los 2^8 bytes posibles corren el riesgo de perder o transformaciones durante la transferencia de datos simple (para ejemplo una secuencia copy-paste-emailsend-emailreceive-copy-paste).

(reenvíe la respuesta al comentario de Brian, lo hago más completo y, con suerte, más claro).

+0

Nah, es solo temprano y no tuve ganas de dar una respuesta completa. Esto es bueno. –

+0

Ver, puedo utilizar Atrás el uso de Base64 para copiar/pegar datos binarios como texto sin tener que preocuparme por caracteres que no sean de impresión (como una URL de datos para contener, por ejemplo, datos de imagen, en una cadena). Lo que no entiendo es cuando la gente lo usa para codificar texto sin formato. Al igual que la forma * Hyper Light Drifter * almacena sus datos guardados en una cadena JSON y luego los codifica en Base64.Es un paso adicional innecesario en el guardado/carga que no hace nada útil, y requiere más tiempo y espacio. Si no podían ser jodidos para escribir su propio sistema de salvar, ¿cuánto más en el juego se pasó por alto? –

3

Base64 es un mecanismo que permite representar y transferir datos binarios a través de medios que permiten solo caracteres imprimibles. Es la forma más popular de "Codificación de base", los otros conocidos en uso son Base16 y Base32.

La necesidad de Base64 surgió de la necesidad de adjuntar contenido binario a correos electrónicos como imágenes, videos o contenido binario arbitrario. Desde SMTP [RFC 5321] sólo se permite caracteres US-ASCII de 7 bits dentro de los mensajes, había una necesidad de representar estas corrientes de octetos binarios usando los caracteres ASCII de siete bits ...

Hope esto responde a la pregunta

Cuestiones relacionadas