Преобразование данных — это преобразование компьютерных данных из одного формата в другой. В компьютерной среде данные кодируются различными способами. Например, компьютерное оборудование построено на основе определенных стандартов, которые требуют, чтобы данные содержали, например, проверки битов четности . Аналогично, операционная система основана на определенных стандартах для обработки данных и файлов. Кроме того, каждая компьютерная программа обрабатывает данные по-разному. Всякий раз, когда изменяется любая из этих переменных, данные должны быть преобразованы каким-либо образом, прежде чем их сможет использовать другой компьютер, операционная система или программа. Даже разные версии этих элементов обычно включают разные структуры данных. Например, изменение битов из одного формата в другой, обычно в целях взаимодействия приложений или возможности использования новых функций, является просто преобразованием данных. Преобразования данных могут быть такими простыми, как преобразование текстового файла из одной системы кодировки символов в другую; или более сложными, такими как преобразование форматов офисных файлов или преобразование форматов изображений и аудиофайлов .
Существует множество способов преобразования данных в компьютерной среде. Это может быть бесшовным, как в случае обновления до более новой версии компьютерной программы. В качестве альтернативы преобразование может потребовать обработки с использованием специальной программы преобразования или может включать сложный процесс прохождения промежуточных этапов или включать сложные процедуры «экспорта» и «импорта», которые могут включать преобразование в текстовый файл с разделителями табуляции или запятыми и из него. В некоторых случаях программа может распознавать несколько форматов файлов данных на этапе ввода данных, а затем также способна сохранять выходные данные в нескольких различных форматах. Такая программа может использоваться для преобразования формата файла. Если исходный формат или целевой формат не распознаются, то иногда может быть доступна третья программа, которая позволяет выполнить преобразование в промежуточный формат, который затем можно переформатировать с помощью первой программы. Существует множество возможных сценариев.
Перед выполнением любого преобразования данных пользователь или программист приложения должен иметь в виду несколько основ теории вычислений и информации . К ним относятся:
Например, изображение в истинном цвете можно легко преобразовать в оттенки серого, в то время как обратное преобразование является кропотливым процессом. Преобразование текстового файла Unix в текстовый файл Microsoft (DOS/Windows) включает добавление символов, но это не увеличивает энтропию , поскольку основано на правилах; тогда как добавление цветовой информации к изображению в оттенках серого не может быть надежно выполнено программно, поскольку требует добавления новой информации, поэтому любая попытка добавить цвет потребует оценки компьютером на основе предыдущих знаний. Преобразование 24-битного PNG в 48-битный не добавляет к нему информации, оно только дополняет существующие значения пикселей RGB нулями [ необходима цитата ] , так что пиксель со значением FF C3 56, например, становится FF00 C300 5600. Преобразование позволяет изменить пиксель, чтобы он имел значение, например, FF80 C340 56A0, но само преобразование этого не делает, это может сделать только дальнейшая манипуляция изображением. Преобразование изображения или аудиофайла из формата с потерями (например, JPEG или Vorbis ) в формат без потерь (например, PNG или FLAC ) или несжатый (например, BMP или WAV ) только тратит место, поскольку целью становится то же изображение с потерей исходной информации (артефакты сжатия с потерями). Изображение JPEG никогда не может быть восстановлено до качества исходного изображения, из которого оно было сделано, независимо от того, как сильно пользователь пытается использовать функцию « Удаление артефактов JPEG » своей программы для обработки изображений.
Автоматическое восстановление информации, утраченной в результате процесса сжатия с потерями, вероятно, потребует значительных достижений в области искусственного интеллекта .
Из-за этих реалий вычислительной техники и теории информации преобразование данных часто является сложным и подверженным ошибкам процессом, требующим помощи экспертов.
Преобразование данных может происходить напрямую из одного формата в другой, но многие приложения, которые преобразуют между несколькими форматами, используют промежуточное представление , с помощью которого любой исходный формат преобразуется в целевой. [1] Например, можно преобразовать кириллический текст из KOI8-R в Windows-1251 , используя таблицу соответствия между двумя кодировками, но современный подход заключается в том, чтобы сначала преобразовать файл KOI8-R в Unicode , а затем из него в Windows-1251. Это более управляемый подход; вместо того, чтобы нуждаться в таблицах соответствия для всех возможных пар кодировок символов, приложению нужна только одна таблица соответствия для каждого набора символов, которую оно использует для преобразования в Unicode и из него, тем самым уменьшая количество таблиц с сотен до нескольких десятков. [ необходима цитата ]
Pivotal conversion также используется в других областях. Офисные приложения, когда они используются для преобразования между форматами офисных файлов, используют свой внутренний формат файла по умолчанию в качестве опорного. Например, текстовый процессор может преобразовать файл RTF в файл WordPerfect , преобразуя RTF в OpenDocument , а затем в формат WordPerfect. Программа преобразования изображений не преобразует изображение PCX в PNG напрямую; вместо этого при загрузке изображения PCX оно декодирует его в простой растровый формат для внутреннего использования в памяти, а при получении команды на преобразование в PNG это изображение в памяти преобразуется в целевой формат. Аудиоконвертер, который преобразует из FLAC в AAC, сначала декодирует исходный файл в необработанные данные PCM в памяти, а затем выполняет сжатие AAC с потерями для этого изображения в памяти, чтобы создать целевой файл.
Целью преобразования данных является сохранение всех данных и как можно большего количества встроенной информации. Это можно сделать только в том случае, если целевой формат поддерживает те же функции и структуры данных, что и в исходном файле. Преобразование документа текстового процессора в файл обычного текста обязательно влечет за собой потерю информации о форматировании, поскольку формат обычного текста не поддерживает конструкции текстового процессора, такие как выделение слова жирным шрифтом. По этой причине преобразование из одного формата в другой, который не поддерживает важную для пользователя функцию, выполняется редко, хотя это может быть необходимо для обеспечения совместимости, например, преобразование файла из одной версии Microsoft Word в более раннюю версию, чтобы обеспечить передачу и использование другими пользователями, на компьютерах которых не установлена та же самая более поздняя версия Word.
Потерю информации можно смягчить путем аппроксимации в целевом формате. Не существует способа преобразовать символ типа ä в ASCII , поскольку стандарт ASCII его не содержит, но информацию можно сохранить, аппроксимировав символ как ae . Конечно, это не оптимальное решение и может повлиять на такие операции, как поиск и копирование; и если язык делает различие между ä и ae , то эта аппроксимация действительно влечет за собой потерю информации.
Преобразование данных также может страдать от неточности, что является результатом преобразования между форматами, которые концептуально различаются. Парадигма WYSIWYG , существующая в текстовых процессорах и настольных издательских приложениях, в отличие от структурно-описательной парадигмы, встречающейся в SGML , XML и многих производных от них приложениях, таких как HTML и MathML , является одним из примеров. Использование HTML-редактора WYSIWYG объединяет две парадигмы, и результатом являются HTML-файлы с неоптимальным, если не нестандартным, кодом. В парадигме WYSIWYG двойной перенос строки означает новый абзац, поскольку это визуальная подсказка для такой конструкции, но HTML-редактор WYSIWYG обычно преобразует такую последовательность в <BR><BR>, что структурно вообще не является новым абзацем. Другой пример: преобразование из PDF в редактируемый формат текстового процессора — сложная задача, поскольку PDF записывает текстовую информацию, как гравюра на камне, причем каждому символу присваивается фиксированное положение, а переносы строк жестко закодированы, тогда как форматы текстовых процессоров поддерживают переформатирование текста. PDF не знает символа пробела между словами — пробел между двумя буквами и пробел между двумя словами отличаются только количеством. Поэтому заголовок с достаточным интервалом между буквами для эффекта обычно будет содержать пробелы в файле текстового процессора, например, ВВЕДЕНИЕ с интервалом 1 em как ВВЕДЕНИЕ в текстовом процессоре.
Успешное преобразование данных требует глубоких знаний о работе исходного и целевого форматов. В случае, если спецификация формата неизвестна, для выполнения преобразования потребуется обратная разработка . Обратное проектирование может достичь близкого приближения к исходным спецификациям, но ошибки и отсутствующие функции все равно могут возникнуть.
Преобразование формата данных может также происходить на физическом уровне электронной системы связи. Преобразование между линейными кодами, такими как NRZ и RZ, может быть выполнено при необходимости.
Manolescu, FirstName (2006). Pattern Languages of Program Design 5. Upper Saddle River, NJ: Addison-Wesley. ISBN 0321321944.