# Conversión (informática)

En informática, la conversión alude al proceso de transformación de datos informáticos de una representación concreta a otra, cambiando los bits de un formato de archivo formato a otro, normalmente para lograr la interoperabilidad de aplicaciones o sistemas diferentes». Al nivel más simple, la conversión de datos puede ejemplificarse por la conversión de un archivo de texto desde una codificación de caracteres a otra. Son conversiones más complejas las de los formatos de ficheros ofimáticos y multimedia, a veces fuera de las capacidades de ordenadores domésticos (o a expensas de tiempos de proceso muy altos).

## Conceptos básicos

Antes de que pueda efectuarse cualquier conversión de datos el usuario o programador de aplicaciones debe tener en mente unos cuantos conceptos básicos de teoría de la información e informática:
* Es fácil descartar información usando un ordenador, pero añadirla requiere esfuerzo.
* El ordenador puede usarse para añadir información solo sobre la base de reglas; la mayoría de adiciones que interesa a los usuarios solo puede lograrse con la ayuda de humanos.
* Sobremuestrear los datos o convertirlos a un formato con más posibilidades no añade información: solo hace hueco para dicha adición, que suele tener que hacer un humano.
Por ejemplo, una imagen truecolor puede ser convertida fácilmente a escala de grises, siendo la conversión opuesta un proceso concienzudo. Convertir un fichero de texto Unix a un fichero de texto Microsoft (DOS/Windows) implica añadir información, concretamente un retorno de carro (CR) antes de cada salto de línea (LF), pero dicha adición puede hacerse con un ordenador gracias a que se basa en reglas, mientras la adición de información de color a una imagen en escala de grises no puede hacer programáticamente, ya que solo un humano sabe qué colores son necesarios para cada parte de la imagen, por lo que no hay reglas que puedan usarse para automatizar el proceso.
Convertir un PNG de 24 bits a uno de 48 bits de profundidad de color no añade información a la imagen, pues solo rellena los valores RGB de los píxeles con ceros. La conversión permite luego afinar estos valores «expandidos», pero solo con posteriores manipulaciones manuales. Convertir una imagen o un fichero multimedia desde un formato comprimido con pérdida (como JPEG o Vorbis) a otro sin pérdida (como PNG o FLAC) o descomprimido (como BMP o WAV) solo desperdicia espacio, ya que la imagen o sonido resultante será el mismo, con la información original perdida (los artefactos de la compresión con pérdida). Una imagen JPEG nunca puede recuperar la calidad de la imagen original anterior a la compresión, por mucho que se use la herramienta de «Eliminación de artefactos JPEG» (que retiran aún más información de la imagen) de los programas de edición gráfica.
Debido a estas realidades, la conversión de datos es con mucha frecuencia un proceso complejo y propenso a errores, que requiere de la ayuda de expertos. Es seguro afirmar que solo el éxito de la inteligencia artificial llevará a la quiebra a las compañías dedicadas a la conversión de datos.

## Conversión pivote

La conversión de datos puede ser realizada directamente de un formato a otro, pero muchas aplicaciones que convierten entre múltiples formatos usan una codificación pivotal mediante la cual cualquier formato origen se convierte a su destino. Por ejemplo, es posible convertir texto cirílico desde KOI8-R a Windows-1251 usando una tabla de equivalencias entre ambas codificaciones, pero la aproximación moderna es convertir el fichero KOI8-R a Unicode primero y de aquí a Windows-1251. Este es un enfoque más manejable: una aplicación especializada en conversión de codificaciones de caracteres necesitaría tener cientos de tablas de equivalencias, para todas la permutaciones de conversiones de codificación de caracteres disponibles, mientras contar solo con tablas de equivalencia para cada codificación de caracteres y Unicode reduce el número a solo unas decenas.
La conversión pivote se usa igualmente en otras áreas. Las aplicaciones ofimáticas, cuando se usan para convertir entre formatos de ficheros ofimáticos, usan su propio formato de fichero interno como pivote. Por ejemplo, un procesador de texto puede convertir un fichero RTF a formato WordPerfect convirtiendo el primero a OpenDocument y este a WordPerfect. Un programa de conversión de imágenes puede no convertir una imagen PCX a PNG directamente; en lugar de esto, al cargar la imagen PCX la decodifica a un formato de mapa de bits simple para uso interno en memoria y cuando se le pide que convierta a PNG guarda dicha imagen en memoria al formato destino. Un conversor de audio que convierta de FLAC a AAC decodifica el fichero origen a datos PCM brutos en memoria primero, y entonces realiza la compresión con pérdida AAC a partir de esta imagen de memoria para obtener el fichero de destino.

## Conversión de datos con pérdida e inexacta

Para que cualquier conversión pueda ser realizada sin pérdida de información, el formato destino debe soportar las mismas características y atributos presentes en el fichero origen. La conversión de un documento de procesador de texto a texto plano implica necesariamente la pérdida de información, debido a que este último no soporta atributos tales como marcar una palabra en negrita. Por esta razón, la conversión de un formato a otro con menos posibilidades rara vez se lleva a cabo, aunque puede resultar necesaria para la interoperabilidad, por ejemplo, convertir un fichero de una versión de Microsoft Word a una versión anterior para conseguir que aquellos que no tienen la última versión de Word instalada puedan acceder a los datos.
La pérdida de información puede ser mitigada mediante aproximación en el formato destino. No hay forma de convertir un carácter como «ä» a ASCII, ya que este estándar carece de él, pero la información puede retenerse aproximando el carácter como «ae». Por supuesto, ésta no es una solución óptima, y puede tener impacto en operaciones como la búsqueda y la copia, y si un lenguaje hace una distinción entre «ä» y «ae» entonces esta aproximación sigue suponiendo pérdida de información.
La conversión de datos también sufre de inexactitud cuando se convierte entre formatos que son conceptualmente diferentes. El paradigma WYSIWYG, presente en procesadores de texto y aplicaciones de autoedición, frente al paradigma estructura-descriptivo, hallado en SGML, XML y muchas aplicaciones basadas en ellos, como HTML y MathML, es un ejemplo. Usar un editor HTML WYSIWYG mezcla los dos paradigmas y el resultado es ficheros HMTL con código subóptimo, e incluso no estándar. En el paradigma WYSIWYG un doble salto de línea significa un párrafo nuevo, pues esa es la pista visual para dicho constructor, pero en un editor HTML WYSIWYG convertirá esta secuencia a <BR><BR>, que estructuralmente no es un párrafo nuevo. Otro ejemplo la conversión de PDF a un formato de procesado de texto editable, lo que supone una tarea difícil, ya que PDF guarda la información textual como grabada en piedra, con cada carácter en una posición fija y los saltos de línea como cambios en dichas posiciones, mientras un procesador de texto acomoda el texto a medida se necesita. PDF no sabe lo que es un carácter espacio, siendo este representado como el desplazamiento horizontal mayor de lo habitual entre dos letras. Esto provoca serios problemas a la hora de convertir de uno a otro formato.

## Especificaciones abiertas y cerradas

Convertir datos con éxito exige un amplio conocimiento del funcionamiento de los formatos origen y destino. Cuando se desconoce la especificación de un formato, será necesaria la ingeniería inversa para lograr llevar a cabo la conversión. La ingeniería inversa puede lograr una buena aproximación a las especificaciones originales, pero puede seguir provocando errores y carencia de características. Por ejemplo, el formato binario de los documentos Microsoft Office (DOC, XLS, PPT, etcétera) no está documentado, por lo que todos aquellos que quieran interoperar con ellos necesitan realizar ingeniería inversa. Aunque tales esfuerzos han tenido bastante éxito, lo que hace que la mayoría de los ficheros de Microsoft Word se abran sin problemas en OpenOffice.org Writer, unos pocos ficheros muy complejos que usen características inusuales del formato DOC serán convertidos erróneamente, mostrando los límites de la ingeniería inversa.