Тарифы Услуги Сим-карты

Для чего нужен бинарный файл. Описание типизированных файлов. Как установить бинарный файл Su на Андроид с помощью кастомного Recovery

В приведенном выше примере самым "длинным" является вариант "b ": для него требуется 23 байта (21 байт для строки и 2 байта для целого числа). Для вариантов "n " и "m " требуется 4 и 5 байт соответственно (см. таблицу).

name, publisher item Вариантная часть

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

Бинарные файлы хранят информацию в том виде, в каком она представлена в памяти компьютера, и потому неудобны для человека. Заглянув в такой файл, невозможно понять, что в нем записано; его нельзя создавать или исправлять вручную - в каком-нибудь текстовом редакторе - и т.п. Однако все эти неудобства компенсируются скоростью работы с данными.

Кроме того, текстовые файлы относятся к структурам последовательного доступа, а бинарные - прямого. Это означает, что в любой момент времени можно обратиться к любому, а не только к текущему элементубинарного файла .

Типизированные файлы

Переменные структурированных типов данных (кроме строкового) невозможно считать из текстового файла. Например, если нужно ввести из текстового файла данные для наполнения записи toy информацией об имеющихся в продаже игрушках (название товара, цена товара и возрастной диапазон, для которого игрушка предназначена):

age: set of 0..18; {в файле задано границами}

то придется написать следующий код:

c: char; i,j,min,max: integer;

a: array of toy;

begin assign(f,input); reset(f);

for i:=1 to 100 do if not eof(f)

then with a[i] do

begin readln(f,name,price,min,max); age:=;

for j:= min to max do age:=age+[j];

Как видим, такое поэлементное считывание весьма неудобно и трудоемко.

Выход из этой ситуации предлагают типизированные файлы - их элементы могут относиться к любому базовому или структурированному типу данных. Единственное ограничение: все элементы должны быть одного и того же типа. Это кажущееся неудобство является

непременным условием для организации прямого доступа к элементам бинарного файла : как и в случае массивов, если точно известна длина каждого компонента структуры, то адрес любого компонента может быть вычислен по очень простой формуле:

<начало_структуры> + <номер_компонента>*<длина_компонента>

Описание типизированных файлов

В разделе var файловые переменные, предназначенные для работы стипизированными файлами , описываются следующим образом:

var <файловая_перем>: file of <тип_элементов_файла>;

Никакая файловая переменная не может быть задана константой.

Назначение типизированного файла

С этого момента и до конца раздела под словом "файл" мы будем подразумевать "бинарный типизированный файл " (разумеется, если специально не оговорено иное).

Команда assign(f,"<имя_файла>"); служит для установления связи между файловой переменнойf и именем того файла, за работу с которым эта переменная будет отвечать.

Строка "<имя_файла> " может содержать полный путь к файлу. Если путь не указан, файл считается расположенным в той же директории, что и исполняемый модуль программы.

Открытие и закрытие типизированного файла

В зависимости от того, какие действия ваша программа собирается производить с открываемым файлом, возможно двоякое его открытие:

reset(f); - открытие файла для считывания из него информации и одновременно длязаписи в него (если такого файла не существует, попытка открытия вызовет ошибку). Эта же команда служит для возвращения указателя на начало файла;

rewrite(f); - открытие файла длязаписи в него информации; если такого файла не существует, он будет создан; если файл с таким именем уже есть, вся содержавшаяся в нем ранее информация исчезнет.

Закрываются типизированные файлы процедуройclose(f) , общей для всех типов файлов.

Считывание из типизированного файла

Чтение из файла, открытого для считывания, производится с помощью команды read() . В скобках сначала указывается имя файловой переменной, а затем - список ввода1) :

Вводить из файла можно только переменные соответствующего объявлению типа, но этот тип данных может быть и структурированным. Cкажем, если вернуться к примеру, приведенному в начале п. "Типизированные файлы ", то станет очевидным, что использованиетипизированного файла вместо текстового позволит значительно сократить текст программы:

type toy = record name: string; price: real;

age: set of 0..18; {задано границами}

var f: file of toy;

a: array of toy; begin

assign(f,input);

for i:=1 to 100 do

if not eof(f) then read(f,a[i]); close(f);

Поиск в типизированном файле

Уже знакомая нам функция eof(f:file):boolean сообщает о достигнутом конце файла. Все остальные функции "поиска конца" (eoln() ,seekeof() иseekeoln() ), свойственные текстовым файлам, нельзя применять к файламтипизированным .

Зато существуют специальные подпрограммы, которые позволяют работать с типизированными файлами как со структурами прямого доступа:

1. Функция filepos(f:file):longint сообщит текущее положение указателя в файлеf . Если он указывает на самый конец файла, содержащегоN элементов, то эта функция выдаст результатN . Это легко объяснимо: элементы файла нумеруются начиная с нуля, поэтому последний элемент имеет номер N-1 . А номерN принадлежит, таким образом, "несуществующему" элементу - признаку конца файла.

2. Функция filesize(f:file):longint вычислит длину файлаf .

3. Процедура seek(f:file,n:longint) передвинет указатель в файлеf на началозаписи с номеромN . Если окажется, чтоn больше фактической длины файла, то указатель будет передвинут и за реальный конец файла.

4. Процедура truncate(f:file) обрежет "хвост" файлаf : все элементы начиная с текущего и до конца файла будут из него удалены. На самом же деле произойдет лишь переписывание признака "конец файла" в то место, куда указывал указатель, а физически "отрезанные" значения останутся на прежних местах - просто они станут "бесхозными".

Запись в типизированный файл

Сохранять переменные в файл, открытый для записи , можно при помощи командыwrite() . Так же как и в случае считывания, первой указывается файловая переменная, а за ней - список вывода:

write(f,a,b,c); - записать в файлf (предварительно открытый длязаписи командамиrewrite(f) илиreset(f) ) переменныеa ,b ,c .

Выводить в типизированный файл можно только переменные соответствующего описанию типа данных. Неименованные и нетипизированные константы нельзя выводить в

типизированный файл.

Типизированные файлы рассматриваются как структуры одновременно и прямого, и последовательного доступа. Это означает, чтозапись возможна не только в самый конец файла, но и в любой другой его элемент. Записываемое значение заместит предыдущее значение в этом элементе (старое значение будет "затерто").

Например, если нужно заместить пятый элемент файла значением, хранящимся в переменной а , то следует написать следующий отрывок программы:

seek(f,5); {указатель будет установлен на начало 5-го элемента}

write(f,a); {указатель будет установлен на начало 6-го элемента}

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

Мы же попытаемся растолковать всё максимально простым языком, ведь такие сведения полезны для каждого пользователя , даже самого неискушённого, потому что имеют непосредственное отношение к азам компьютерной безопасности .

Немного теории

Текстовый файл содержит в себе символы ASCII (аббревиатура расшифровывается как American Standard Code for Information Interchange, что-то вроде «американский стандарт кодировки для обмена информацией »).

Фактически ASCII - это таблица, в которой каждой букве, цифре, знаку пунктуации и разным «собакам» со «снежинками» (в смысле, @ и *) выделено по одному байту. То бишь, по восемь нулей и единиц (бит) . Плюс, конечно, управляющие символы вроде перехода к новой строке.

Программа для открытия файлов с символами ASCII преобразовывает байты в буквы, цифры и прочие печатные знаки на дисплее . Конечно, софт должен понимать ту часть таблицы, которая соответствует русскому языку, но это уже вопрос кодировки.

В бинарном файле нули и единицы выстраиваются в последовательности, которые нужны необязательно для отображения текстов (хотя есть и такие, например, *doc). А для чего же, спросите вы. Ответ прост: для всего остального. Программы, фильмы, музыка, изображения - у каждого формата свои структурные принципы организации данных.

Само слово «бинарный» означает «состоящий из двух компонентов», «двойной». Действительно, чётко определить получается только два компонента - ноль и единицу, биты, «кирпичики», из которых сложен файл. Смысл всего остального может проявляться только во время запуска (открытия, воспроизведения).

Изнанка цифрового мира

Заглянуть внутрь бинарного файла можно с помощью специальной программы - HEX-редактора. (От слова Hexadecimal, обозначающего шестнадцатеричную систему счисления.) Такой софт показывает байты в виде их HEX-обозначений, расположенных фактически тоже в виде таблицы (матрицы).

К примеру, байты изображения в формате JPEG, обычной картинки или фотографии, в окошке редактора будут показаны как FF D8 FF 00 04 3A 29 и так далее.

Специалист поймёт, что последовательность байт FF D8 в самом начале указывает на то, что перед нами - именно JPEG. А неспециалистам всё это не так уж интересно.

В HEX-редакторе можно открыть и текстовый файл, чтобы увидеть, какие байты соответствуют конкретным буквам (символам ASCII). Но только разве что из любопытства, всё равно смысла в этом нет.

А вот бинарные файлы, бывает, просматривают в шестнадцатеричном виде с вполне осмысленно и конкретными целями. Например, специалисты антивирусных лабораторий таким образом ищут вредоносный код, дописанный к основному. Кстати, переходим к вопросам безопасности.

Что способно навредить

Текстовый файл не может содержать ничего, кроме символов ASCII. Однако программы бывают не только бинарными, но и состоящими из вышеуказанных символов. Имеются ввиду скрипты, конечно.

Иными словами, файл *txt не заражается в принципе и угрозы не представляет. А если внутри текстового файла - скрипт, то бед натворить он способен немало.

К примеру, файл *bat содержит код разных команд и запускается двойным кликом, как обычная программа. Написаны те команды символами ASCII, но операционная система умеет их интерпретировать - превращать в такие нули и единицы, какие характерны именно для программ.

Но вы, конечно, не жмёте на неведомые bat-файлы, правда? Вот и хорошо.

Предыдущие публикации:

Последнее редактирование: 2012-11-06 14:45:16

Метки материала: ,

Сегодня мы поговорим о самой распространённой ошибке, возникающей во время запуска программы SuperSu. Сама проблема проявляется в виде уведомления следующего содержания: «Нет бинарного файла SU и SuperSu». Как обновить бинарный su файл на Андроид? Об этом вы и узнаете из нашего материала.

SuperSU – специальное приложение для администрирования, позволяющее осуществлять расширенное управление всеми установленными приложениями. Иными словами, с SuperSU вы получаете полный контроль над своим Android-устройством. Подробнее о программе:

Итак, при запуске SuperSU на экране появилось вот такое сообщение:

Здесь нужно пояснить, что файл Su является основополагающим компонентом прав «Суперпользователя», поэтому с его удалением вы теряете root-права. И даже если у вас старая версия SuperSU, которая не исключает возможность работать на ней, то проблемы, связанные с выполнением каких-либо операций, однозначно возникнут. Поэтому обновить, или вернее, правильно установить бинарный файл Su придётся в любом случае.

Для этого нам понадобится скачать и установить программу Baidu Root . В Гугл Плее этого приложения нет, так что можно, открыв любой браузер, найти эту утилиту, или нажав на указанную ссылку, скачать прямо с этой страницы. После чего начнётся загрузка ark-файла, процесс которой будет виден на дисплее:

Теперь нам нужно открыть файл и нажать кнопку «Установить». На запрос о разрешении установки, нажимаем кнопку «ОК»:

Затем откроется окошко с информацией о данных, к которым приложение получит доступ, и предупреждение об ответственности самого пользователя. Соглашаемся со всем, и вот, установка Baidu Root завершена:

После установки внизу дисплея справа и слева появятся две кнопки, жмём на правую, после чего, по центру экрана появится синий монитор, где будет указана ваша модель Андроид, и голубая кнопка по центру (получить root) , нажимаем на неё, после чего произойдёт перезагрузка аппарата. Теперь пробуем запустить приложение SuperSU. От Baidu Root появится запрос на Root-доступ (права Суперпользователя), предоставляем. Далее появится запрос на обновление бинарного файла SU, нажимаем кнопку «Продолжить»:

Затем программа предложит способ, которым устанавливать файл SU, выбираем «Нормально». Начнётся процесс установки, о чём нам сообщит система, и венчает все наши усилия опять же сообщение от системы, что установка завершилась успешно, жмём «ОК»:

Всё, процедура завершена, и мы можем в полной мере пользоваться программой SuperSu и использовать все инструменты, имеющиеся в арсенале программы, в том числе и проводить т.н. временный ‘unroot’ на своём устройстве.

Как установить бинарный файл Su на Андроид с помощью кастомного Recovery

Описанный выше способ не решил проблему? Что ж, такое возможно, особенно это может касаться моделей HTC. В таком случае, придётся воспользоваться кастомным (альтернативным) рекавери. И если он у вас ещё не установлен, но желание стать продвинутым пользователем ОС Android присутствует, то установить его рано или поздно придётся. Потому, что этот инструмент позволит выполнять множество необходимых операций: создавать резервные копии, устанавливать системные обновления или перепрошивать свой Андроид другой версией операционки (ROM) и т.д.

Мы не станем сейчас рассказывать, как установить кастомное Recovery, потому что, это тема отдельного разговора, и если она вам интересна, пишите, и мы расскажем во всех подробностях, как выполнить эту операцию.

Сейчас же мы будем исходить из того, что вы в теме и вернёмся к нашему вопросу. То есть, если у вас есть кастомное рекавери (или вы знаете, как его установить), то смотрим на последний скриншот, и вместо кнопки «Нормально », нажимаем «CWM/TWRP ». После окончания процедуры, перезагружаем смартфон, после чего, вместе с обновлением системы, обновится и бинарный файл Su.

Как установить файл SU через командную строку

Если оба способа не помогли установить (обновить) файл SU, то ситуация осложняется, правда не фатально. Следующий способ, о котором мы расскажем, ориентирован на достаточно продвинутых пользователей, которые имеют опыт работы с командной строкой и знакомы с файловой структурой OS Android.

Итак, наши действия:

Качаем приложения Terminal Emulator for Android и Root Browser . Затем, скачиваем архив updatesu.zip , разархивируем его и перемещаем папку updatersu на SD-карту или внутреннюю память своего устройства Андроид.

Теперь запускаем Root Browser , заходим в папку updatersu и копируем следующие файлы: (.has_su_daemon ) (.installed_su_daemon ) (install-recovery.sh ) в папку /system/etc

После этого нам нужно для этих файлов задать верные права:

Затем нам надо перейти в следующую папку, а именно /system/bin и создать папку .ext и задать для неё права:

Следующим шагом копируем файл su, находящийся в папке /system/xbin в только что созданную папку (/system/bin/.ext ), переименовываем файл su, поставив перед названием точку (.su) и задаём для него права:

Нам осталось запустить приложение Terminal Emulator for Android и ввести следующие команды:

Теперь перезагружаемся и снова пробуем обновить бинарный файл su с помощью кнопки «Нормально» в программе SuperSu (см. выше).

Описание и внутреннее представление файлов

Файлы отличаются друг от друга. Все файлы, хранящиеся в компьютере, имеют специальные атрибуты, т.е. специальные способы описания, позволяющие отличить один файл от другого: 1)имя; 2)размер; 3)дата и время; 4)значок.

У каждого файла есть имя - имя файла. Имя файла описывает его содержимое или подсказывает, для чего он может использоваться. Имя присваивается файлу при его создании. Это относится ко всем файлам.

Каждый файл имеет физический размер. Файл занимает некоторый объем памяти компьютера и некоторый объем дискового пространства.

В момент создания файла операционная система на него ставит печать с указанием даты и времени создания. Это позволяет сортировать файлы по дате и времени и таким образом наводить порядок в компьютере. Также отмечается дата и время обновления или изменения файла.

Каждый файл относится к определенному типу, тесно связанному со значком файла, который мы видим. Тип файла зависит от его содержимого. Каждая программа присваивает созданному документу определенный тип и соответствующий значок.

Размер файла измеряется в байтах, как и объем памяти.

Размер файла может составлять 0 байт, это значит, что файл существует, но ничего в себе не содержит. S Максимальный размер файла - 4 Гбайт. Но такие огромные файлы встречаются очень редко.

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

Каждый файл имеет уникальный индекс. Индекс содержит информацию, необходимую любому процессу для того, чтобы обратиться к файлу. Процессы обращаются к файлам, используя четко определенный набор системных вызовов и идентифицируя файл строкой символов, выступающих в качестве составного имени файла. Каждое составное имя однозначно определяет файл, благодаря чему ядро системы преобразует это имя в индекс файла. Индекс включает в себя таблицу адресов расположения информации файла на диске. Так как каждый блок на диске адресуется по своему номеру, в этой таблице хранится совокупность номеров дисковых блоков. В целях повышения гибкости ядро присоединяет к файлу по одному блоку, позволяя информации файла быть разбросанной по всей файловой системе. Но такая схема размещения усложняет задачу поиска данных. Таблица адресов содержит список номеров блоков, содержащих принадлежащую файлу информацию, однако простые вычисления показывают, что линейным списком блоков файла в индексе трудно управлять. Для того, чтобы небольшая структура индекса позволяла работать с большими файлами, таблица адресов дисковых блоков приводится в соответствие со структурой.

Текстовые и бинарные файлы

Файлы позволяют пользователю считывать большие объемы данных непосредственно с диска, не вводя их с клавиатуры. Существуют два основных типа файлов: текстовые и двоичные.

Текстовыми называются файлы, состоящие из любых символов. Они организуются по строкам, каждая из которых заканчивается символом «конца строки» . Конец самого файла обозначается символом «конца файла» . При записи информации в текстовый файл, просмотреть который можно с помощью любого текстового редактора, все данные преобразуются к символьному типу и хранятся в символьном виде.

В двоичных файлах информация считывается и записывается в виде блоков определенного размера, в которых могут храниться данные любого вида и структуры.

Для работы с файлами используются специальные типы данных, называемые потоками. Поток ifstreamслужит для работы с файлами в режиме чтения, а ifstream в режиме записи. Для работы с файлами в режимах, как записи, так и чтения служит поток ifstream.

В программах на C++ при работе с текстовыми файлами необходимо подключать библиотекиifstream и iostream.

Для того чтобы записывать данные в текстовый файл, необходимо: 1)описать переменную типа ofstream open ; 3)вывести информацию в файл; 4)обязательно закрыть файл.

Для считывания данных из текстового файла, необходимо:

1)описать переменную типа ifstream ; 2)открыть файл с помощью функции open ; 3)считать информацию из файла, при считывании каждой порции данных необходимо проверять, достигнут ли конец файла; 4)закрыть файл.

Следует отметить, что во всех рассмотренных выше примерах функция fopen() в режимах “r” и “w” открывает текстовый файл на чтение и запись соответственно. Это означает, что некоторые символы форматирования текста, например возврат каретки ‘\r’ не могут быть считаны как отдельные символы, их как бы ни существует в файле, но при этом они там есть. Это особенность текстового режима файла. Для более «тонкой» работы с содержимым файлов существует бинарный режим, который представляет содержимое файла как последовательность байтов, где все возможные управляющие коды являются просто числами. Именно в этом режиме возможно удаление или добавление управляющих символов недоступных в текстовом режиме. Для того чтобы открыть файл в бинарном режиме используется также функция fopen() с последним параметром равным “rb” и “wb” соответственно для чтения и записи.

Бинарный файл - это любой файл на вашем компьютере. Вся информация на компьютере и связанных с ним носителях записана в битах (отсюда и название). Однако, для сравнения, текстовый файл можно прочитать в соответствующих расширению ридерах (простейшие - даже в Блокноте), а исполняемый файл - нет. И хоть фактически txt-файл является тем же бинарным файлом, но когда говорят о проблеме открытия содержимого бинарных файлов, имеют ввиду исполняемые файлы, а также сжатые данные.

Вам понадобится

  • - программа Hex Edit.

Инструкция

  • Загрузите на винчестер прогамму Hex Edit - редактор файлов, представляющий их содержимое в двоичном виде. Откройте программу, дважды кликнув мышью по стартовому файлу. Данное программное обеспечение позволяет в режиме реального времени читать бинарные файлы, изменять содержимое, добавлять свои собственные записи и многое другое. Чтобы полноценно работать в данной среде, вам нужно немного знать об общих понятиях бинарных файлов.
  • Окно программы мало чем отличается от обычного редактора: знакомые меню и панель с кнопками, тело редактируемого файла, закладки и строка состояния. Откройте бинарный файл через меню File или кликнув по соответствующей пиктограмме на панели. Бинарный файл предстанет перед вами в виде строк с цифрами и буквами. Не путайте эти символы с печатными данными текстовых файлов. Их можно также править, удаляя символы, однако при этом вы удалите ячейки с данными, кусочки файла.
  • Внесите изменения в содержимое файла. Приложение может показать важные части файла для более удобного поиска, а также имеет гибкую настройку графического отображения двоичного кода. Переключите вид содержимого в режим ASCII+IBM/OEM, чтобы увидеть программный код файла. Если вы внесете неправильные строки в файл, он может работать некорректно, вызвав при этом серьезные последствия у операционной системы персонального компьютера.
  • Сохраните изменения. Если у вас нет опыта в таком редактировании файлов, будьте готовы к тому, что файл не откроется и откажется работать после внесения изменений. Вы, скорее всего, испортите несколько копий, прежде чем добьетесь результата. Старайтесь не сохранять все изменения в исходный файл, чтобы его содержимое оставалось неизменным.