понедельник, 16 ноября 2009 г.

Бинарные файлы

В этой статье я расскажу только теоретические представления о файлах, потому что их важно понять, чтобы успешно работать с файлами в HiAsm.
Любой файл, по сути, бинарный, потому что содержит двоичные данные. Даже текстовые файлы - и те содержат двоичные данные.

Возможно, это нарушит ваши представления о файлах, но даже текстовые файлы - и те бинарные! Что же это означает? Для этого нужно понять, что такое файл вообще. Файл - это просто набор байт независимо от содержания: графический, звуковой, текстовый или архив. Более того - не от набора байт зависит, картинка ли в файле или звук! Чтобы вы всё поняли, копнём глубже.

Байт - это единица измерения информации, состоящая из 8 бит. А что же такое бит? Бит - это тоже единица измерения информации, но у неё всего два возможных варианта, которые она может принимать. Это обусловлено тем, что физически бит представлен мельчайшим участком диска, который может быть либо намагничен, либо размагничен (условно). В одном случае бит считается равным 1, в другом – 0. Третьего не дано.

Расположенные рядом 8 бит и составляют 1 байт. Всего возможных комбинаций бит в байте - 256 (2^8). Следовательно, числовое значение байта может быть равно от 0 до 255 включительно.

Разумеется, текстовые файлы также являются набором байт со своими значениями, и никаких символов в этом наборе нет. Да и как символ можно записать на диск физически? Но как же из байт получаются символы? А вот как.

Интерпретация байт в файле зависит только от программы, в которой он открыт. Если это текстовый редактор, то он считывает каждый байт, в специальной таблице находит соответствие графического изображения символа значению байта и выводит символ на экран.
Если это звуковая программа, то она берёт обычно сразу два байта и находит их общее значение (16 бит - это 65 536 возможных значений!), а затем подаёт соответствующий сигнал на звуковую карту.
Графическая программа обычно берёт сразу 3 байта (24 бита = 16 777 216 значений!), находит по их значению соответствующий оттенок цвета и выдаёт его на экран (1 пиксель).

Что это значит? А то, что если графический файл открыть в Блокноте, то вы увидите символьное представление его байт. Разумеется, прочесть текст невозможно, но не для того и файл создан.
А если открыть текстовый файл в звуковой программе (GoldWave позволяет это сделать), то вы услышите просто шипение и писк. Сигнал подаётся правильно, в соответствии со значениями байт в файле, но именно такой набор значений и является писком и шипением...

А почему, если в проигрывателе открыть текстовый файл, он не проиграется, проигрыватель выдаст ошибку? Дело в том, что при записи записывающая программа добавляет к файлу в самом начале несколько байт. Значение этих байт - число - содержит размер "звуковых" байт, некоторую другую служебную информацию, в том числе и небольшую специфическую последовательность байт, по которой проигрыватель и понимает, что в файле - звук (такая комбинация станадртна для стандартных форматов типа WAV, MP3). А без этого он откажется воспроизводить файл.

Всё вышесказанное важно для работы с файлами в HiAsm. Вы теперь знаете, что файл - это набор байт. И работать будете либо с одним определённым байтом, либо с группой байт. Вы сможете создать "свой" формат файла, который будет содержать, например, картинку и звук, байты которых следуют друг за другом. При открытии такого файла в вашей программе она сможет извлечь байты, принадлежащие картинке, и вывести картинку, а также проиграть звук.

Также вы сможете эффективно работать с файлами известных форматов и многое другое.


Удалить татуировку или сделать фотоомоложение поможет лазерная медицина и косметология от компании LINLINE. Наносекундные лазерные импульсы.

Юридическая компания в Екатеринбурге поможет решить проблему в бизнесе. В компании "Оптима" есть и юристы, и бухгалтеры, и аудиторы, и оценщики, которые рассмотрят проблему комплексно и найдут выход.

Хотите купить автомобиль? Автомобили с пробегом, покупка автомобиля, автомобили по городам. Можете также подать объявление по продаже автомобиля.

6 комментариев:

  1. Все ясно но мне нужно увидеть именно любой файл в бинарном виде , тоесть отдельно каждый байт в двоичной системе . А у меня открывается по 4 байта в блоке (тоесть interger). Да еще и количество бит в каждом блоке разное. Не знаю как вставить исходник в коментарий , может показали бы где у меня косяк. Попробую через почту

    ОтветитьУдалить
  2. Нет черз почту тоже не получается (больше 300 знаков).

    ОтветитьУдалить
  3. Чтобы вставить исходник, выделите схему, скопируйте и вставьте в комментарий.
    Эта статья - просто вводная, сегодня я напишу конкретно про работу с файлами в HiAsm.

    ОтветитьУдалить
  4. А как сделать в HiAsm чтоб открывались ехе или флеш файлы, тоесть у меня есть флеш файлы в ехе формате как их запхать в HiAsm для исполнения.
    заранее спасибо, лучше схемку, так как я полный дундук.

    ОтветитьУдалить
  5. Флэш можно так.

    Exe по тому же принципу, но только после создания временного файла применять комопнент WinExec. что на вкладке "Система".

    ОтветитьУдалить
  6. Спасибо большое, все получилось.
    Гдето находил в интернете схемки для запуска внешнего файла, они все большие и у меня не работали. А эта супер, схемка простая, все работает. еще раз Спасибо...

    ОтветитьУдалить