Site Loader
Что такое HEX и ASCII-дескрипторы или как определить формат файла без расширения

Как известно любая информация будь то текст, изображение или видео, по сути, является ничем иным как набором двоичного кода — последовательности нулей и единиц. Именно в таком виде на жёстком диске хранятся данные. Понятие двоичный код едва ли не абстрактное, это не запись в привычном понимании этого слова, двоичный или машинный код это скорее состояние микроскопических ячеек на магнитной поверхности жесткого диска. Положительный заряд такой ячейки имеет знак плюс или 1, отрицательный — минус или 0.

Логически объединенные последовательности нулей и единиц как раз и составляют то, что мы называем файлами. Но ведь мы знаем и то, что типов файлов очень много. Есть текстовые файлы, мультимедийные, архивные, системные, исполняемые и так далее. Каким же образом операционная система определяет как читать или обрабатывать тот или иной файл? Прикладные программы распознают тип файла по его расширению — набору символов следующих после имени файла и отделенных от него точкой.

Но что будет, если расширение удалить? Всё правильно, операционная система не сможет открыть такой файл, так как не будет знать какую программу для этого использовать. Однако ни логическая структура, ни содержимое переименованного файла от этого не изменится. Вы и сами в этом можете убедиться удалив расширение какого-нибудь файла, а затем попробовав его открыть соответствующей программой. Уверены, с этим у вас проблем не возникнет.

Следовательно, вовсе не расширение определяет тип файла. Тогда что же? Тип файла определяет его формат или иначе спецификация структуры данных. Расширение и формат очень часто путают, хотя на деле это совершенно разные понятия. Тут возникает вполне закономерный вопрос, а как определить формат файла, если его расширение по какой-то причине оказалось утрачено? Оказывается очень просто.

Грубо говоря, все файлы состоят из двух частей. Первая часть это заголовок, содержащий различную метаинформацию включая те данные, которые позволяют прикладным программам этот самый файл идентифицировать. Вторая часть это «тело» файла. Отвечающая за определение типа файла часть заголовка файла именуется дескриптором или описанием. Наиболее распространёнными типами дескрипторов являются HEX и ASCII. Первый тип заголовков можно просмотреть только с помощью специальных утилит — шестнадцатеричных редакторов

.

Для просмотра дескрипторов второго типа можно обойтись обычным текстовым редактором, тем же Блокнотом или Notepad++. Однако следует учитывать, что далеко не все последовательности байтов можно перевести в ASCII-код, поэтому для определения формата всё-таки лучше использовать HEX-редакторы. Открытый в HEX-редакторе файл отображается в виде матрицы из последовательности байтов. Каждая ячейка соответствует одному байту. Данные дескриптора содержатся как раз в первых трёх ячейках (реже двух или четырех), расположенных по горизонтали. Представляют они из себя шесть символов в шестнадцатеричном счислении, например 49 44 33 или ff d8 e0

.

Открытый в HEX-редакторе файл

Естественно они нуждаются в расшифровке. А расшифровать их можно на специальных сайтах с описаниями форматов. Одним из лучших сайтов, где можно определить формат по HEX-дескриптору является open-file.ru. Есть и другие подобные ресурсы, но они не настолько удобны. На open-file.ru же имеется специальная поисковая форма, куда можно вставить HEX или ASCII дескриптор и пробить его по базе данных. Система быстро найдёт соответствующий формат и предоставит вам его полное описание.

Open-file.ru поиск по HEX

С HEX-редакторами всё более или менее понятно, но как мы сказали для определения ASCII-заголовков также можно использовать редакторы текстовые. Принцип здесь тот же самый, открываем файл Блокнотом или Notepad++, копируем первые символы и вставляем их в поисковое поле того же open-file или другого сайта с поддержкой поиска по заголовкам.

Казалось бы всё очень просто, но есть в деле идентификации форматов и свои сложности. Иногда ASCII-заголовки совпадают с расширением файла (RAR и PDF), но может быть и такое, что заголовок оказывается принадлежащим сразу нескольким форматам. Это можно видеть на примере офисного формата DOCX (PK и 50 4b 03 04). В таких случаях точно определить формат проблематично.

ASCII

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

Файл является размеченным текстовым документом

Так, строка [Content_Types].xml в DOCX явно указывает на то, что исследуемый файл является размеченным текстовым документом.

Учимся считать в hex, или реверс-инженеринг будильника / Хабр

Содержание

Введение

Недавно у меня появилась мысль научиться считать в шестнадцатеричной системе счисления. Так как я человек ленивый, такие способы, как выучить таблицу умножения меня не устраивали. Немного поразмыслив, я вспомнил, что каждое утро решаю (иногда несколько раз) несложный пример, чтобы отключить будильник. Помогает слабо, со временем я начал решать почти не просыпаясь. Так почему бы не совместить полезное с полезным?
Осталось выбрать способ реализации. Так как я не имею не малейшего представления о разработке под андроид (да и вообще с Java не сильно знаком), да и писать свое приложение ради такой мелочи — это стрельба из пушки по воробьям, было решено модифицировать уже имеющийся будильник.

Под катом вы найдете описание инструментов, процесса и результата перевода примера в hex. А также объяснение синтаксиса smali кода (язык опкодов для виртуальной машины dalvik). Картинок почти нет, буков много.
Немного о структуре .apk

Приложение .apk — это файл упакованный zip’ом. Внутри содержатся файлы ресурсов, AndroidManifest.xml и classes.dex. Второе — это файл в котором содержатся основные сведения о приложении, как-то: информация об основном Activity, список прав, запрашиваемых при установке, и прочая не важная для наших целей информация. classes.dex — скомпилированный для виртуальной машины dalvik байт-код. Его мы можем перевести в jar и получить более или менее читаемый код на Java. Чем мы сейчас и займемся.
Получение читабельного кода

Итак, берем файл нашего приложения (в моем случае это AlarmDroid) и разархивируем его. Есть много способов сделать это, я пользовался Apk Manager, о котором я еще напишу чуть ниже. Далее нужно конвертировать classes.dex в jar. Для этого есть dex2jar. Перетаскиваем файл на dex2jar.bat. Теперь нужно научиться читать получившийся jar файл. Используем для этого программу jd-gui (кстати есть одноименный плагин для Eclipse).
Итак мы получили почти читаемый код, хотя кое-где декомпилятор явно плющит.
Декомпиляция и чтение .smali файлов

Так как java код read-only, исправлять придется в опкодах виртуальной машины. Их всего чуть меньше 256 штук. Для декомпиляции можно использовать упомянутый выше Apk Manager или более консольный apktool. Впрочем первое является лишь красивой оберткой второго, с добавлением некоторых дополнительных функций(например разархивация и выбор уровня сжатия). После декомпиляции получаем папку с файлами с расширением .smali. Это и есть те самые опкоды. Их уже можно читать любым текстовым редактором. Но неплохо было бы обзавестись какой-нибудь подсветкой. Я пользовался подсветкой для Notepad++, но есть так же и для vim.
Ну, с инструментами, наконец разобрались, пора и код анализировать.
Первая кровь

Для начала неплохо было бы сделать генерацию чисел не до 10, а до 15. Изучаем код, и находим метод генерации примера. Поискать его придется, классов в деревьях много. Но так как названия методов сохранились, это не очень сложно.
Находим искомый метод в классе RingerActivity.

Ну вроде все, просто: генерируем 3 числа и 2 знака, и кладем результат в this.x (это нам, кстати, пригодится).
Теперь находим этот же метод в smali-коде (к сожалению в онлайне нету хайлайтеров smali кода, а свой писать лениво, поэтому код будет скринами).

(Код метода продолжается дальше)
Код непонятный, но явно видно что константы задаются один раз в начале. Поэтому меняем 0xa на 0xf и пытаемся увидеть изменения, чтобы знать что мы на верном пути. С помощью Apk Manager собираем, подписываем, перекачиваем на телефон (можно тестировать на эмуляторе, если установлен Android SDK), устанавливаем, ставим будильник на минуту вперед, ждем, смотрим. Эту процедуру придется повторять большое количество раз. Числа на экране увеличились, ошибок не возникает. Отлично! Теперь самое время немного разобраться в непонятном smali коде.
Разбираемся в smali коде

В общем-то все довольно хорошо описано вот тут, я лишь вкратце и по-русски перескажу.
Типы, методы, поля

В dalvik опкодах есть два вида типов: примитивные(primitive) и ссылочные(reference). Примитивные типы обозначаются одной буквой (например I — int, V — void), полный список здесь.
Ссылочные типы — это объекты и массивы, или, иными словами, все кроме примитивных типов. В коде обозначаются как
Lpackage/name/ObjectName;
где L в начале означает, что это объект, а; — конец имени. Данная запись будет эквивалентна
package.name.ObjectName
в Java.
Массивы имеют вид [I — это одномерный массив интов(в Java будет int[]). Для большего количества измерений просто добавляем квадратных скобочек в начале. [[[I == int[][][] (максимальное количество измерений — 255). Разумеется можно создавать массивы ссылочных типов, массив строк, например, будет выглядеть вот так:
[Ljava/lang/String;

Методы задаются длинным образом, который включает в себя объект содержащий метод, имя метода, типы всех передаваемых параметров, и тип возвращаемого значения.
Lpackage/name/ObjectName;->MethodName(III)Z
В этом примере Lpackage/name/ObjectName; — это объект, содержащий метод, MethodName — имя метода, (III) — типы передаваемых параметров (в данном случае 3 инта), и Z — тип возвращаемого значения (в данном случае bool).
Вот еще один более сложный пример.
method(I[[IILjava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

На Java этот код будет выглядеть так:
String method(int, int[][], int, String, Object[])

Поля классов задаются следующим образом:
Lpackage/name/ObjectName;->FieldName:Ljava/lang/String;

Здесь в общем-то все и так ясно.
Регистры

В smali коде все регистры 32 битные и могут содержать любой тип значений. Для 64 битных значений используются 2 регистра.
Определение количества регистров в методе

Есть два способа определить количество регистров. Директива .registers определяет общее количество регистров, в то время как .locals определяет количество регистров, не являющихся параметрами метода.
Передача параметров

При вызове метода аргументы попадают в последние регистры. Т.е. если метод вызывается с 2 аргументами и 5 регистрами(v0-v4), аргументы попадают в регистры v3 и v4.
Первый параметр в нестатических методах — это всегда объект, от которого был вызван метод. Таким образом если вы вызываете нестатический метод
 LMyObject;->callMe(II)V

в него, помимо двух интов, передается LMyObject; перед обоими интами, и получается, что в методе 3 параметра. И если вы задали общее количество регистров в методе 5 (или локальное количество 2), то в v2 попадет объект, в v3 — первый инт, в v4 — второй.
Именование регистров

Есть 2 схемы именования регистров: общая v-схема, и p-схема для регистров параметров. В вышеизложенном примере у нас будут 5 общих регистров v0-v4, и 3 регистра параметров p0-p2, причем как было сказано выше p0 и v2 (а также p1 и v3, p2 и v4) обозначают один и тот же регистр.

В общем есть еще некоторые тонкости, но нам для изменения будильника они не важны.

Перевод примера в hex

Теперь, когда со smali кодом стало все ясно, неплохо было бы перевести пример в hex. Свою функцию писать очень уж не хотелось, поэтому я обратился к гуглу. И нашел метод Integer.toHexString().
Итак находим нужный метод
private void updateProblemView()
  {
    TextView localTextView = this.problem;
    String str1 = String.valueOf(this.a);
    StringBuilder localStringBuilder1 = new StringBuilder(str1).append(» «);
    int i = this.p;
    String str2 = op2text(i);
    StringBuilder localStringBuilder2 = localStringBuilder1.append(str2).append(» «);
    int j = this.b;
    StringBuilder localStringBuilder3 = localStringBuilder2.append(j).append(» «);
    int k = this.q;
    String str3 = op2text(k);
    StringBuilder localStringBuilder4 = localStringBuilder3.append(str3).append(» «);
    int m = this.c;
    String str4 = m + » = «;
    localTextView.setText(str4);
  }
и его же в smali коде
.method private updateProblemView()V
    .locals 3
    .prologue
    .line 520
    iget-object v0, p0, Lcom/splunchy/android/alarmclock/RingerActivity;->problem:Landroid/widget/TextView;
    new-instance v1, Ljava/lang/StringBuilder;
    iget v2, p0, Lcom/splunchy/android/alarmclock/RingerActivity;->a:I
    invoke-static {v2}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
    move-result-object v2
    invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
    const-string v2, » «
    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    move-result-object v1
    iget v2, p0, Lcom/splunchy/android/alarmclock/RingerActivity;->p:I
    invoke-direct {p0, v2}, Lcom/splunchy/android/alarmclock/RingerActivity;->op2text(I)Ljava/lang/String;
    move-result-object v2
    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    move-result-object v1
    const-string v2, » «
    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    move-result-object v1
    iget v2, p0, Lcom/splunchy/android/alarmclock/RingerActivity;->b:I
    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    move-result-object v1
    const-string v2, » «
    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    move-result-object v1
    iget v2, p0, Lcom/splunchy/android/alarmclock/RingerActivity;->q:I
    invoke-direct {p0, v2}, Lcom/splunchy/android/alarmclock/RingerActivity;->op2text(I)Ljava/lang/String;
    move-result-object v2
    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    move-result-object v1
    const-string v2, » «
    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    move-result-object v1
    iget v2, p0, Lcom/splunchy/android/alarmclock/RingerActivity;->c:I
    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    move-result-object v1
    const-string v2, » = «
    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    move-result-object v1
    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object v1
    invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
    .line 521
    return-void
.end method

Для первого числа в примере все просто. Заменяем
invoke-static {v2}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
на
invoke-static {v2}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String;
и дело с концом. С остальными двумя чуть посложнее, они не переводясь в String добавляются в результат. Поэтому заменяем
iget v2, p0, Lcom/splunchy/android/alarmclock/RingerActivity;->b:I
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
на
iget v2, p0, Lcom/splunchy/android/alarmclock/RingerActivity;->b:I
invoke-static {v2}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
(обратите внимание, что тип передаваемого значения изменился). Аналогично делаем с третьим числом.
Запускаем — видим маленькие буковки. А хочется то большие! Не проблема, дописываем перед добавлением в строку
invoke-virtual {v2}, Ljava/lang/String;->toUpperCase()Ljava/lang/String;
move-result-object v2
для всех трех чисел.
Изменение поля ввода

В общем-то на этом можно было остановится, считать стало на порядок сложнее. Но сейчас тренируется перевод из hex в dec, а считать мы продолжаем в десятичной. Это не то чего хотелось. Поэтому необходимо преобразовать поле ввода.
Первым делом, чтобы закончить с методом update добавим «0x» перед полем ввода. Ну это совсем просто, изменяем
const-string v2, » = «
на
const-string v2, » = 0x»
Далее нужно изменить тип поля ввода с числового на текстовый (числовой hex, к сожалению, не предусматривает). Подобные свойства хранятся в xml файлах. Тут мне помог поиск по файлам по ключевым словам «arithmetic», «math» и подобным. В файле res/layout/ringer.xml находим строчку
<EditText android:textSize="36.0dip" android:gravity="left" android:id="@id/math_solution" android:visibility="invisible" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@null" android:inputType="phone" />
гуглим, находим список значений inputType, меняем на «text».
Теперь осталось научится преобразовывать ввод так, чтобы он совпадал с результатом вычисленным при генерации (RingerActivity.x, помните?). Ищем и находим следующий код

label1621: label1912: for (boolean bool15 = false; ; bool15 = true)
    {
      boolean bool16 = bool15;
      this.arithmeticProblemSolved = bool16;
      RingerActivity localRingerActivity14 = this;
      int i9 = 2131099787;
      TextView localTextView4 = (TextView)localRingerActivity14.findViewById(i9);
      this.problem = localTextView4;
      RingerActivity localRingerActivity15 = this;
      int i10 = 2131099788;
      EditText localEditText1 = (EditText)localRingerActivity15.findViewById(i10);
      this.solution = localEditText1;
      RingerActivity localRingerActivity16 = this;
      String str7 = «input_method»;
      InputMethodManager localInputMethodManager = (InputMethodManager)localRingerActivity16.getSystemService(str7);
      this.imm = localInputMethodManager;
      EditText localEditText2 = this.solution;
      9 local91 = new com/splunchy/android/alarmclock/RingerActivity$9;
      9 local92 = local91;
      RingerActivity localRingerActivity17 = this;
      ImageButton localImageButton5 = localImageButton3;
      ImageButton localImageButton6 = localImageButton1;
      local92.<init>(localRingerActivity17, localImageButton5, localImageButton6);
      localEditText2.setOnEditorActionListener(local91);
Понять что-либо довольно сложно, но видим некоторую связь solution и com/splunchy/android/alarmclock/RingerActivity$9. Оказывается последнее — это smali файл, который, судя по всему jd-gui не смог адекватно отобразить. Идем туда и находим нужный нам метод сравнения!

iget-object v1, p0, Lcom/splunchy/android/alarmclock/RingerActivity$9;->this$0:Lcom/splunchy/android/alarmclock/RingerActivity;
invoke-static {v1}, Lcom/splunchy/android/alarmclock/RingerActivity;->access$10(Lcom/splunchy/android/alarmclock/RingerActivity;)Landroid/widget/EditText;
move-result-object v1
invoke-virtual {v1}, Landroid/widget/EditText;->getText()Landroid/text/Editable;
move-result-object v1
invoke-interface {v1}, Landroid/text/Editable;->toString()Ljava/lang/String;
move-result-object v1
new-instance v2, Ljava/lang/Integer;
iget-object v3, p0, Lcom/splunchy/android/alarmclock/RingerActivity$9;->this$0:Lcom/splunchy/android/alarmclock/RingerActivity;
iget v3, v3, Lcom/splunchy/android/alarmclock/RingerActivity;->x:I
invoke-direct {v2, v3}, Ljava/lang/Integer;-><init>(I)V
invoke-virtual {v2}, Ljava/lang/Integer;->toString()Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
Ну что, добавляем перевод в верхний регистр строке, прочитанной из поля ввода, благо этому мы уже научились. После этого заменяем
iget v3, v3, Lcom/splunchy/android/alarmclock/RingerActivity;->x:I
invoke-direct {v2, v3}, Ljava/lang/Integer;-><init>(I)V
invoke-virtual {v2}, Ljava/lang/Integer;->toString()Ljava/lang/String;
move-result-object v2
на
iget v2, v3, Lcom/splunchy/android/alarmclock/RingerActivity;->x:I
invoke-static {v2}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String;
move-result-object v2
и тут тоже добавляем перевод в верхний регистр. Собираем, смотрим. Ура! Все работает.
Заключение

Скоро сказка сказывается, да не скоро дело делается. Из-за отсутствия дебаггера, тестирование очень сложно, для того чтобы запустить приложение и проверить его работоспособность требуется пара минут, и много надоедающих действий.
Также очень хотелось переделать цифровую раскладку моей любимой клавиатуры Swype для ввода в hex. Но их зашифрованные файлы раскладок стали для меня неодолимым препятствием. =(

Вот финальная версия будильника. К сожалению обновляться после модификации он перестал. Ну да мне и нынешнего функционала хватает.

Спасибо за внимание, буду рад любой критике!

P.S. Шестнадцатеричная таблица умножения

Что означает HEX? -определения HEX


Вы ищете значения HEX? На следующем изображении вы можете увидеть основные определения HEX. При желании вы также можете загрузить файл изображения для печати или поделиться им со своим другом через Facebook, Twitter, Pinterest, Google и т. Д. Чтобы увидеть все значения HEX, пожалуйста, прокрутите вниз. Полный список определений приведен в таблице ниже в алфавитном порядке.

Основные значения HEX

На следующем изображении представлены наиболее часто используемые значения HEX. Вы можете записать файл изображения в формате PNG для автономного использования или отправить его своим друзьям по электронной почте.Если вы являетесь веб-мастером некоммерческого веб-сайта, пожалуйста, не стесняйтесь публиковать изображение определений HEX на вашем веб-сайте.

Все определения HEX

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

Что означает HEX в тексте

В общем, HEX является аббревиатурой или аббревиатурой, которая определяется простым языком. Эта страница иллюстрирует, как HEX используется в обмена сообщениями и чат-форумах, в дополнение к социальным сетям, таким как VK, Instagram, Whatsapp и Snapchat. Из приведенной выше таблицы, вы можете просмотреть все значения HEX: некоторые из них образовательные термины, другие медицинские термины, и даже компьютерные термины. Если вы знаете другое определение HEX, пожалуйста, свяжитесь с нами. Мы включим его во время следующего обновления нашей базы данных. Пожалуйста, имейте в информации, что некоторые из наших сокращений и их определения создаются нашими посетителями. Поэтому ваше предложение о новых аббревиатур приветствуется! В качестве возврата мы перевели аббревиатуру HEX на испанский, французский, китайский, португальский, русский и т.д. Далее можно прокрутить вниз и щелкнуть в меню языка, чтобы найти значения HEX на других 42 языках.

Чем и как открыть файл HEX

Формат файла hex, сокращённо от «шестнадцатеричный» или «base-16», является структурой необработанных данных, которой следуют все файлы, хранящиеся на вашем компьютере. Хотя буквально каждый документ хранится в этом формате, найти его на ПК практически невозможно. Хотя далеко не все знают, что возможность напрямую изменять необработанные биты и байты на ПК иногда может быть очень полезна.

Чем и как открыть файл HEXЧем и как открыть файл HEX

Что обозначает расширение HEX

Система счисления, которую люди используют для подсчёта, называется десятичной (числа от 0 до 9), и была изобретена персами около 6000 лет назад. В 1950-х или 1960-х годах IBM формализовала шестнадцатеричную систему счисления, которая является коротким способом представления двоичных данных. Вместо использования цифр 0-9, шестнадцатеричное число использует цифры от 0 до F. Достигнув конца числовых «цифр», вы просто увеличиваете число влево на единицу, точно так же, как вы делаете это с системой счёта десятичных чисел.

Файлы с расширением HEX имеют те же свойства, что и двоичные. Все байты размещаются один за другим. Информация об адресе или контрольные суммы не добавляются. Единственная разница с двоичным форматом такова, что каждый байт преобразуется в 2 символа ASCII в диапазоне 0-9 и A-F, представляющие 2 шестнадцатеричные цифры. Эти символы сгруппированы по строкам. Номер пары в строке обычно может варьироваться от 1 до 255, где наиболее общей длиной являются 16 или 32 пары. Каждая строка заканчивается парой CR (ASCII-значение $ 0D) или CRLF (ASCII). Для работы с такими документами требуется специальная программа-редактор хекс-файлов. Она в удобном виде выведет всю информацию и позволит достаточно комфортно её воспринимать и изменять.

Что такое HEX-файлЧто такое HEX-файл

Как открыть файл HEX

Далеко не все являются программистами, и иногда открыть файл с расширением HEX может понадобиться обычному человеку, чтобы посмотреть в нём некую информацию. На самом деле для такой простой задачи вполне достаточно обычного Блокнота – стандартного приложения, которое имеется в любой системе Windows. Ведь этот файл, по сути, является текстовым, просто в нём записана специфическая информация, но обычными символами.

Для этого достаточно кликнуть на файле правой кнопкой мыши, выбрать в меню пункт «Открыть» или «Открыть с помощью», затем «Выбрать из списка установленных программ», а далее просто выбрать стандартный Блокнот. Снимите галочку с пункта «Использовать выбранную программу для всех файлов этого типа» – вдруг вы его потом будете открывать другой программой. Можно просто открыть Блокнот, а файл в него перетащить, и он откроется.

Гораздо удобнее для открытия таких файлов подходит другая версия Блокнота – Notepad++. Скачать можно по этой ссылке. Эта программа также есть у многих, так как более удобна. Но она может к тому же распознавать многие языки программирования и файлы HEX в ней выглядят гораздо удобнее, так как есть выделение цветом. Notepad++ представляет собой как бы примитивный HEX-редактор, и этим можно пользоваться совершенно свободно.

Так выглядит HEX-файл, открытый в Notepad++. В стандартном Блокноте так же, но без цвета.Так выглядит HEX-файл, открытый в Notepad++. В стандартном Блокноте так же, но без цвета.

Так выглядит HEX-файл, открытый в Notepad++. В стандартном Блокноте так же, но без цвета.

А теперь рассмотрим более подробно, для чего может понадобиться открывать, а тем более изменять файлы с шестнадцатеричным содержимым. Кстати, если вы собираетесь делать это часто, то лучше скачайте и установите специальный HEX-редактор – их в Интернете довольно много. Некоторые из них подробнее рассматриваются далее.

Взлом игр и файлов

Популярная причина, по которой вы можете использовать шестнадацтеричный редактор, – взлом игр. Вы можете загрузить документ сохранения игры и изменить сумму денег, например, от 1000 до 1000000 долларов. В более поздних играх всё сделано намного сложнее. Многие современные игры используют либо сжатие, либо шифрование, что во много раз затрудняет декомпиляцию состояния сохранения или игры. Тем не менее, некоторые игры по-прежнему позволяют редактировать определённые переменные, например, Sonic Spinball. В дополнение к просмотру файлов игры, из сохранённого файла иногда можно извлечь другую важную информацию, к которой у вас иначе не было бы доступа. Это сильно зависит от типа файла и того, какую информацию вы ищете, но использование шестнадцатеричного редактора полезно для определения того, что именно находится в документе.

Отладка и редактирование

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

Какие hex-редакторы использовать

Шестнадцатеричный редактор представляет собой софт, используемый для просмотра и редактирования бинарных файлов. Двоичный документ представляет собой документ, который содержит данные в машиночитаемой форме. HEX-редакторы позволяют изменять содержимое необработанных данных файла. Поскольку шестнадцатеричный редактор используется для редактирования двоичных файлов, их иногда называют двоичным редактором или редактором двоичных файлов. Если открыть документ с помощью шестнадцатеричного редактора, появится сообщение о том, что документ редактируется в шестнадцатеричном формате, а процесс использования шестнадцатеричного редактора называется шестнадцатеричным редактированием. Шестнадцатеричные редакторы отличаются от обычных текстовых рядом функций. Основой шестнадцатеричного редактора является то, что они отображают необработанное содержимое файла. Нет кодирования или перевода в текст – только необработанный машинный код. Во-вторых, номера строк вместо того являются адресом смещения от начала файла. Мы подобрали несколько лучших бесплатных программ для просмотра и редактирования документов HEX.

HxD

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

HxDHxD

Преимущества:

  • Действительно большие данные – последняя версия HxD обрабатывает большие наборы данных. Если он помещается на диск, HxD сможет его открыть.
  • Стандартные параметры – HxD содержит множество полезных дополнений, таких как генератор контрольных сумм, поддержка нескольких наборов символов, редактор ОЗУ, уничтожитель файлов, разбиение и объединение, неограниченное количество отмен и портативная версия.
  • Экспорт данных – программа экспортирует данные в исходный код (C, C#, Java, Pascal и VB.NET) или в шестнадцатеричные форматы.

Недостатки:

  • Не для неопытного пользователя, но это не недостаток. Программа ориентирована на продвинутых пользователей.

DeltaHex Editor

Один из лучших hex-редакторов на основе библиотеки deltahex. Используйте действие «Открыть как шестнадцатеричный» в главном меню «Файл» или в контекстном меню файлов проекта.

Характеристики:

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

DeltaHex EditorDeltaHex Editor

Free Hex Editor Neo

Free Hex Editor Neo – это самый быстрый бесплатный редактор двоичных файлов для платформы Windows. Алгоритмы обработки данных Neo Hex Editor чрезвычайно оптимизированы и тщательно настроены для обработки операций с большими файлами.

Характеристики программы:

  • Неограниченное Undo/Redo.
  • Редактировать, Копировать, Вырезать, Вставить, Удалить, Заполнить, Импорт/Экспорт, Вставить шаблон/файл, Изменить размер файла, Смещение к началу, Изменить биты.
  • Поиск и замена шаблонов.
  • Подсветка.
  • Байты, слова, двойные слова, группировка четырёх слов.
  • Шестнадцатеричное, Десятичное, Восьмеричное, Двоичное и т.д. представление данных.
  • Изменение атрибутов файла.
  • Анализ данных буфера обмена.
  • Создание бинарных патчей, поиск/замена регулярных выражений.
  • Многоязычный интерфейс.

Free Hex Editor NeoFree Hex Editor Neo

Функции и возможности утилиты:

  • Статистика и шестнадцатеричный анализатор – модуль анализа двоичных данных позволяет анализировать распределение байтов, символов и строк по шестнадцатеричным дампам и текстовым данным. Анализатор двоичных файлов Neo поддерживает шаблоны следующих типов: шаблоны символов и строк ASCII/Unicode, шаблоны данных Hex, Decimal, Octal, Binary, Float, Double и RegEx (Regular Expression).
  • Графическое представление проанализированных данных в пользовательском интерфейсе Neo – софт поддерживает тепловую карту и визуализацию данных гистограммы. Вы также можете анализировать двоичный документ в форме описательной статистики: среднее значение, дисперсия выборки, стандартное отклонение, стандартная ошибка, эксцесс, асимметрия, медиана, диапазон, минимальное, максимальное, сумма и т.д.
  • Сравнение файлов – Neo представляет собой расширенный инструмент сравнения в шестнадцатеричном формате. Встроенный редактор hex позволяет сравнивать 2 шестнадцатеричных файла, используя два разных алгоритма сравнения: простой (от байта к байту) и алгоритм разности (сопоставление блоков).
  • Редактор ОЗУ – модификатор процесса позволяют редактировать память и обрабатывать данные, загруженные в ОЗУ ПК операционной системой. RAM Explorer предоставляет возможность легко просматривать загруженные процессы и переходить к определённым смещениям. Затем вы можете напрямую обращаться к этим блокам данных и редактировать их в окне шестнадцатеричного редактора. Таким образом, Hex Editor Neo предоставляет возможность просматривать и редактировать данные бинарных программ прямо в оперативной памяти.
  • Дизассемблер – программа также позволяет разбирать исполняемые файлы x86, x64 и .NET. Neo Assembler View поддерживает следующие наборы инструкций: x86, x86-64, MMX, SSE, SSE2, 3DNow!, MSIL. Вы можете загружать файлы символов как для 32-битных, так и для 64-битных исполняемых файлов. Neo – просто идеальный редактор dll/exe!
  • Двоичные шаблоны/редактор структуры – программа поддерживает синтаксический анализ внутренней структуры следующих файлов: exe, dll, sys, ocx, bmp, png, avi, rar, icc, vhd, zip, tiff, wav, tga, psd, pic, pcx, pal, emf EPS.
  • Модуль Structure View – позволяет настраивать двоичные шаблоны. Вы можете написать своё собственное определение структуры файла, используя внутренний язык, подобный C/C++, почти для любого двоичного документа. Например, если вы хотите редактировать файлы данных, вам нужно сначала описать файловую структуру, а затем привязать её к конкретному файлу, используя специальное окно редактора.
  • Анализатор структуры файла делает двоичную корректировку намного проще, чем просто редактирование необработанных шестнадцатеричных байтов. Открывайте, просматривайте и редактируйте файлы hex/bin с небывалой лёгкостью!

Hex Editor Neo предоставляет базовые, расширенные и даже инновационные функции. Шестнадцатеричное редактирование теперь доступно каждому начинающему пользователю!

PSPad

Любимый шестнадцатеричный редактор большинства программистов. PSPad, помимо того, что он является отличным редактором текста и кода, предлагает опцию «Открыть в HEX Editor…», которая запускает специальный режим редактирования. Когда вы находитесь в этом режиме, вы можете увидеть местоположение и шестнадцатеричные значения каждого бита файла. У вас есть два варианта корректировки – вы можете редактировать шестнадцатеричные значения по местоположению, или справа у вас есть буквенно-цифровое представление этого значения, которое вы также можете редактировать.

PSPadPSPad

XVI32

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

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

HEX-редакторы и редактирование любых типов файлов

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

Расширение файла

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

Настройки в ОС гибкие, а значит расширение любого файла можно удалить, но тогда операционная система не сможет открыть его, она не поймет, с помощью какой программы его запустить. При этом логическая структура объекта не изменится. На изображении видно текстовый файл, а рядом с ним тот же самое, но без расширения и иконка у него белая.

Что такое HEX редакторы и зачем они нужныЧто такое HEX редакторы и зачем они нужны

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

Дескрипторы

Все файлы можно грубо говоря разделить на две составляющие – заголовок, где содержатся данные идентификации объекта, различные метаданные. Вторая составляющая – «тело» объекта, с помощью которого определяется тип объекта и части заголовка, имеющего название дескриптора. Два популярных дескриптора – ASCII и HEX. Второй вариант анализируется при помощи редакторов, о которых было сказано в начале.

Первый метод ASCII определяется с помощью текстового редактора, например, Notepad++, правда, стоит учесть один момент – некоторые наборы байтов не удастся преобразовать в формат ASCII, а значит рекомендуется применять HEX-редакторы. Запустив любой файлик с помощью такой утилиты, в окне отобразится вид матрицы с последовательностью байтов, где один байт содержится в одной из ячеек. Сведения о дескрипторе обычно находятся в первых 3-х ячейках, редко в большем количестве. Ячейки считаются по горизонтали. Данные, отображённые в ячейках представлены в виде шестнадцатеричном коде.

Что такое HEX редакторы и зачем они нужныЧто такое HEX редакторы и зачем они нужны

Расшифровка дескриптора

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

То, что мы разобрали выше – использование HEX-редакторов. Теперь разберемся с кодом ASCII. Данный код можно проанализировать при помощи того же open-file.ru. Другими словами, оба кода проверяются на ресурсе и ничего по сути не нужно вводить.

Что такое HEX редакторы и зачем они нужныЧто такое HEX редакторы и зачем они нужны

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

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

Что еще можно делать с помощью HEX-редактора

Помимо того, что HEX-редакторы помогают проанализировать любой файл, возможно:

  1. работать с дисковыми образами;
  2. редактировать разделы;
  3. изменять содержимое ОЗУ;
  4. изменять виртуального адресного пространства процесса и прочее.

К примеру, утилиты подобного типа используют в разработке ПО. Когда необходимо внести данные уже после компиляции программы, но перекомпилировать ее не хочется. Любой код программы можно изменить с помощью HEX-редактора. Конечно, это нужно уметь делать, находить нужные данные. Таким образом, добиваются исправления ошибок в коде, либо используют для взлома и читерства. Это значит, применение HEX-редакторов очень широкое.

Какие HEX-редакторы использовать

Существует очень много программ для редактирования данных, и вот они представлены ниже:

Free Hex Editor Neo

Популярная утилита для Windows. С помощью неё пользователю не составит открыть любой тип файла и изменить его. Если что-то отредактировано не так, в утилите есть история изменений и всегда можно вернутся к изначальному состоянию.

Инструмент работает очень быстро, при этом не много весит, а сама способна работать с файлами большого объема. Интерфейс простой и подходит для новичков, присутствует русский язык.

Что такое HEX редакторы и зачем они нужныЧто такое HEX редакторы и зачем они нужны

WinHex

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

Есть возможность работать не только с файлами, но и с жёсткими дисками, флеш-носителями, оптическим дисками и даже дискетами. Поддерживаются все файловые системы Windows. Поддерживает функции клонирования разделов и полного удаления данных без возможности восстановления

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

Что такое HEX редакторы и зачем они нужныЧто такое HEX редакторы и зачем они нужны

HexCmp

Утилита 2 в 1, так как имеет функцию сравнения файлов и встроенный HEX-редактор. Иногда может понадобится сравнения данных файлов, для определения отличий и сходств, и анализа структуры объектов различных форматов.

При отличии в двух файлов области на матрице будут окрашены в какой-либо цвет, а само сравнение происходит в считанные секунды. Правда, для анализа подойдут файлы не более 4 GB.

Сама утилита имеет возможности изменения интерфейса. Что значит, пользователь может настроить его под себя. Работа будет происходить быстрее.

Что такое HEX редакторы и зачем они нужныЧто такое HEX редакторы и зачем они нужны

HxD Hex Editor

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

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

Что такое HEX редакторы и зачем они нужныЧто такое HEX редакторы и зачем они нужны

Hex Workshop

Если какой-то файл не открылся в одном редакторе, значит откроется в этом. Поэтому я и привел здесь список из нескольких утилит. Указанный инструмент отвечает за открытие бинарных файлов. Настроек много, а системные требования доступны для любого компьютера.

Работа в этом редакторе проста, как при печати в Word. Есть опции сравнения файлов, их контрольных сумм и экспорт анализа в различные форматы, например, html.

Если необходимо перевести один код в другую систему счисления, то в Hex Workshop присутствует конвертер. Программка условно-бесплатная, что можно считать одним из недостатков.

Что такое HEX редакторы и зачем они нужныЧто такое HEX редакторы и зачем они нужны

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

Таблица ключевых слов и hex кодов цветов, используемых в Web программировании (CSS, HTML)

В HTML 4.0 было определено лишь 16 цветов (они представлены ниже в таблице Первоначальные цвета), но в более поздних версиях добавилось еще 130 цветов.

Цвета, представленные в шестнадцатеричном формате, поддерживаются всеми основными браузерами. Шестнадцатеричный код цвета имеет формат #RRGGBB, где RR — красный, GG — зеленый и BB— голубой.

Эти значения определяют компоненты цвета, они могут быть в диапазоне от 0 до FF. Если код цвета представляет собой повторяющиеся значения, то его можно записывать в кратком формате вида #RGB, например, черный цвет можно записать как #000000 и #000.

Также можно объявлять цвета по их названию — ключевому слову. В данной таблице представлены ключевые слова, поддерживаемые всеми браузерами. Следует обратить внимание, что некоторые цвета могут задаваться несколькими ключевыми словами, например, цвету #FF00FF соответствуют ключевые слова Fuchsia и Magenta, также серый цвет #808080 может записываться как Gray и как Grey.

 

Первоначальные цвета
Название цветаHEX код
Black#000000
Gray#808080
Silver#C0C0C0
White#FFFFFF
Fuchsia#FF00FF
Purple#800080
Red#FF0000
Maroon#800000
Yellow#FFFF00
Olive#808000
Lime#00FF00
Green#008000
Aqua#00FFFF
Teal#008080
Blue#0000FF
Navy#000080
Оттенки белого
Название цветаHEX код
White#FFFFFF
Snow#FFFAFA
Honeydew#F0FFF0
MintCream#F5FFFA
Azure#F0FFFF
AliceBlue#F0F8FF
GhostWhite#F8F8FF
WhiteSmoke#F5F5F5
Seashell#FFF5EE
Beige#F5F5DC
OldLace#FDF5E6
FloralWhite#FFFAF0
Ivory#FFFFF0
AntiqueWhite#FAEBD7
Linen#FAF0E6
LavenderBlush#FFF0F5
MistyRose#FFE4E1
Оттенки серого
Название цветаHEX код
Gainsboro#DCDCDC
LightGrey#D3D3D3
LightGray#D3D3D3
Silver#C0C0C0
DarkGray#A9A9A9
DarkGrey#A9A9A9
Gray#808080
Grey#808080
DimGray#696969
DimGrey#696969
LightSlateGray#778899
LightSlateGrey#778899
SlateGray#708090
SlateGrey#708090
DarkSlateGray#2F4F4F
DarkSlateGrey#2F4F4F
Black#000000

 

Оттенки красного
Название цветаHEX код
IndianRed#CD5C5C
LightCoral#F08080
Salmon#FA8072
DarkSalmon#E9967A
LightSalmon#FFA07A
Crimson#DC143C
Red#FF0000
FireBrick#B22222
DarkRed#8B0000
Оттенки оранжевого
Название цветаHEX код
LightSalmon#FFA07A
Coral#FF7F50
Tomato#FF6347
OrangeRed#FF4500
DarkOrange#FF8C00
Orange#FFA500
Оттенки коричневого
Название цветаHEX код
Cornsilk#FFF8DC
BlanchedAlmond#FFEBCD
Bisque#FFE4C4
NavajoWhite#FFDEAD
Wheat#F5DEB3
BurlyWood#DEB887
Tan#D2B48C
RosyBrown#BC8F8F
SandyBrown#F4A460
Goldenrod#DAA520
DarkGoldenRod#B8860B
Peru#CD853F
Chocolate#D2691E
SaddleBrown#8B4513
Sienna#A0522D
Brown#A52A2A
Maroon#800000

 

Оттенки желтого
Название цветаHEX код
Gold#FFD700
Yellow#FFFF00
LightYellow#FFFFE0
LemonChiffon#FFFACD
LightGoldenrodYellow#FAFAD2
PapayaWhip#FFEFD5
Moccasin#FFE4B5
PeachPuff#FFDAB9
PaleGoldenrod#EEE8AA
Khaki#F0E68C
DarkKhaki#BDB76B

 

Оттенки зеленого
Название цветаHEX код
GreenYellow#ADFF2F
Chartreuse#7FFF00
LawnGreen#7CFC00
Lime#00FF00
LimeGreen#32CD32
PaleGreen#98FB98
LightGreen#90EE90
MediumSpringGreen#00FA9A
SpringGreen#00FF7F
MediumSeaGreen#3CB371
SeaGreen#2E8B57
ForestGreen#228B22
Green#008000
DarkGreen#006400
YellowGreen#9ACD32
OliveDrab#6B8E23
Olive#808000
DarkOliveGreen#556B2F
MediumAquamarine#66CDAA
DarkSeaGreen#8FBC8F
LightSeaGreen#20B2AA
DarkCyan#008B8B
Teal#008080

 

Оттенки синего
Название цветаHEX код
Aqua#00FFFF
Cyan#00FFFF
LightCyan#E0FFFF
PaleTurquoise#AFEEEE
Aquamarine#7FFFD4
Turquoise#40E0D0
MediumTurquoise#48D1CC
DarkTurquoise#00CED1
CadetBlue#5F9EA0
SteelBlue#4682B4
LightSteelBlue#B0C4DE
PowderBlue#B0E0E6
LightBlue#ADD8E6
SkyBlue#87CEEB
LightSkyBlue#87CEFA
DeepSkyBlue#00BFFF
DodgerBlue#1E90FF
CornflowerBlue#6495ED
MediumSlateBlue#7B68EE
RoyalBlue#4169E1
Blue#0000FF
MediumBlue#0000CD
DarkBlue#00008B
Navy#000080
MidnightBlue#191970

 

Оттенки фиолетового
Название цветаHEX код
Lavender#E6E6FA
Thistle#D8BFD8
Plum#DDA0DD
Violet#EE82EE
Orchid#DA70D6
Fuchsia#FF00FF
Magenta#FF00FF
MediumOrchid#BA55D3
MediumPurple#9370DB
BlueViolet#8A2BE2
DarkViolet#9400D3
DarkOrchid#9932CC
DarkMagenta#8B008B
Purple#800080
Indigo#4B0082
SlateBlue#6A5ACD
DarkSlateBlue#483D8B

 

Оттенки розового
Название цветаHEX код
Pink#FFC0CB
LightPink#FFB6C1
HotPink#FF69B4
DeepPink#FF1493
MediumVioletRed#C71585
PaleVioletRed#DB7093

 

 

Возможно, вам также будут интересны статьи:

hex — это… Что такое hex?

  • -hex — hex·ol; …   English syllables

  • hex — hex·one; hex·on·ic; hex·os·a·mine; hex·o·san; hex·ose; hex·oxide; hex·partite; hex·tetrahedral; hex·tetrahedron; hex·u·lose; hex·u·ron·ic; hex·yl; hex·yl·ene; hex·yl·ic; hex·yne; tet·ra·hex·a·he·dral; ac·e·to·hex·amide; chlor·hex·i·dine;… …   English syllables

  • Hex — Hex: Hex (hexadeсimal)  обозначение шестнадцатеричной системы счисления. См. также Hex редактор  приложение для редактирования данных, представляющее данные как последовательность байтов в hex коде. Intel HEX  формат файла,… …   Википедия

  • hex- — hex(a) élément, du gr. heks, six . ⇒HEX(A) , (HEX , HEXA )élém. formant Élém. formant tiré du gr. « six », servant à former des mots sc. dont le signifié a un rapp. avec le nombre six. Quand le 2e élém. commence par une voyelle, la finale a de l… …   Encyclopédie Universelle

  • Hex- — [↑ Hexa ] Zahlwortstamm in Namen von Verb. oder Gruppen mit 6 C Atomen, z. B. Hexanal, Hexen, Hexyl . * * * hẹx , Hẹx : ↑ hexa , Hexa . * * * hex , Hex : ↑hexa , ↑Hexa . hẹ|xa , Hẹ|xa , (vor Selbstlauten oft auch:) hẹx , Hẹx [griech. héx =… …   Universal-Lexikon

  • Hex- — Hexa Hex a [Gr. e x six. See {Six}.] A prefix or combining form, used to denote six, sixth, etc.; as, hexatomic, hexabasic. [1913 Webster] …   The Collaborative International Dictionary of English

  • hex — [heks] n AmE an evil ↑curse that brings trouble ▪ I think he s trying to put a hex on me. &GT;hex v [T] …   Dictionary of contemporary English

  • hex… — hex…   [griechisch héx »sechs«], auch erweitert zu hexa…, Wortbildungselement mit der Bedeutung: sechs, z. B. Hexosen, Hexaeder …   Universal-Lexikon

  • hex — HEX(A) Element de compunere însemnând de şase ori , sextuplu , care serveşte la formarea unor adjective şi substantive. [var.: exa ] – Din fr. hex(a) . Trimis de gall, 13.09.2007. Sursa: DEX 98 …   Dicționar Român

  • hex… — hex…, Hex… vgl. ↑hexa…, Hexa …   Das große Fremdwörterbuch

  • hex — [ heks ] noun count an evil SPELL (=magic words that make someone have very bad luck): CURSE ╾ hex verb transitive …   Usage of the words and phrases in modern English

  • Hex в ASCII | Конвертер шестнадцатеричных в текстовые строки

    Введите шестнадцатеричные байты с любым префиксом / постфиксом / разделителем и нажмите кнопку Преобразование в
    (например, 45 78 61 6d 70 6C 65 21):

    folder_open Открыть файл поиск

    Вставить шестнадцатеричные числа или удалить файл

    Кодировка символов ASCII Unicode UTF-8, UTF-16 UTF-16 с прямым порядком байтов UTF-16 с прямым порядком байтов Windows-1252 Big5 (китайский) CP866 (русский) EUC-JP (японский) EUC-KR (корейский) GB 18030 (китайский) GB 2312 (китайский) ISO-2022-CN (китайский) ISO-2022-JP (японский) ISO-8859-1 (Latin1 / западноевропейский) ISO-8859-2 (Латинская 2 / Восточноевропейская) ISO-8859-3 (Latin3 / Южно-Европейский) ISO-8859-4 (Latin4 / Северная Европа) ISO-8859-5 (латиница / кириллица) ISO-8859-6 (латинский / арабский) ISO-8859-7 (латинский / греческий) ISO-8859-8 (латинский / иврит) ISO-8859-8-I (латиница / иврит) ISO-8859-10 (Latin6 / Nordic) ISO-8859-13 (Latin7 / Балтийский обод) ISO-8859-14 (Latin8 / кельтский) ISO-8859-15 (Latin9 / западноевропейский) ISO-8859-16 (Latin10 / Юго-Восточная Европа) KOI8-R (русский) КОИ8-У (украинский) Macintosh (x-mac-roman) Mac OS Кириллица (x-mac-кириллица) Shift JIS (японский) Windows-874 (тайский) Windows-1250 (восточноевропейская) Windows-1251 (кириллица) Windows-1252 (западноевропейская) Windows-1253 (греческий) Windows-1254 (турецкий) Windows-1255 (иврит) Windows-1256 (арабский) Windows-1257 (Балтика) Windows-1258 (вьетнамский) X-User-Defined

    автообновление Конвертировать очистить Сбросить swap_vert Swap

    content_copy Копировать save_alt Save

    ASCII в шестнадцатеричный преобразователь ►

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

    Кодировка текста UTF-8 использует переменное число байтов для каждого символа. Это требует разделителя между каждым шестнадцатеричным числом.

    Как конвертировать шестнадцатеричные в текст

    Преобразовать шестнадцатеричный код ASCII в текст:

    1. Получить шестнадцатеричный байт
    2. Преобразование шестнадцатеричного байта в десятичное
    3. Получить символ кода ASCII из таблицы ASCII
    4. Продолжить со следующего байта
    Пример

    Преобразовать шестнадцатеричный ASCII-код 50 6C 61 6E 74 20 74 72 65 65 73 в текст:

    Решение:

    Используйте таблицу ASCII, чтобы получить символ из кода ASCII.

    50 16 = 5 × 16 1 + 0 × 16 0 = 80 + 0 = 80 => «P»

    6C 16 = 6 × 16 1 + 12 × 16 0 = 96 + 12 = 108 => «l»

    61 16 = 6 × 16 1 + 1 × 16 0 = 96 + 1 = 97 => «a»

    Для всех шестнадцатеричных байтов вы должны получить текст:

    «Посадка деревьев»

    Как преобразовать Hex в текст?

    1. Получить шестнадцатеричный байт-код
    2. Преобразование шестнадцатеричного байта в десятичное
    3. Получить символ десятичного кода ASCII из таблицы ASCII
    4. Продолжить со следующим шестнадцатеричным байтом

    Как использовать Hex в ASCII Text Converter?

    1. Вставьте шестнадцатеричные байтовые коды в текстовое поле ввода.
    2. Выберите тип кодировки символов.
    3. Нажмите кнопку Преобразовать.

    Как конвертировать шестнадцатеричный код в английский?

    1. Получить шестнадцатеричный байт-код
    2. Преобразование шестнадцатеричного байта в десятичное
    3. Получить английскую букву десятичного кода ASCII из таблицы ASCII
    4. Продолжить со следующим шестнадцатеричным байтом

    Как конвертировать 41 гекс в текст?

    Использовать таблицу ASCII:
    41 = 4 × 16 ^ 1 + 1 × 16 ^ 0 = 64 + 1 = 65 = символ «A»

    Как конвертировать 30 шестнадцатеричных в текст?

    Использовать таблицу ASCII:
    30 = 3 × 16 ^ 1 + 0 × 16 ^ 0 = 48 = «0» символ

    «name»: «Hex в ASCII Text Converter», «mainEntity»: [{ «@type»: «Вопрос», «name»: «Как преобразовать Hex в текст?», «Принимаемый ответ»: { «@напечатайте ответ», «текст»: «
    1. Получить шестнадцатеричный байт-код
    2. Преобразование шестнадцатеричного байта в десятичное
    3. Получить символ десятичного кода ASCII из таблицы ASCII
    4. Продолжить со следующим шестнадцатеричным байтом

    Подробнее

    » } }, { «@type»: «Вопрос», «name»: «Как использовать Hex в ASCII Text Converter?», «Принимаемый ответ»: { «@напечатайте ответ», «text»: «
    1. Вставить шестнадцатеричные байтовые коды в текстовое поле ввода.
    2. Выберите тип кодировки символов.
    3. Нажмите кнопку Преобразовать.

    Подробнее

    » } }, { «@type»: «Вопрос», «name»: «Как преобразовать шестнадцатеричный код в английский?», «Принимаемый ответ»: { «@напечатайте ответ», «текст»: «
    1. Получить шестнадцатеричный байт-код
    2. Преобразование шестнадцатеричного байта в десятичное
    3. Получить английскую букву десятичного кода ASCII из таблицы ASCII
    4. Продолжить со следующим шестнадцатеричным байтом

    Подробнее

    » } }, { «@type»: «Вопрос», «name»: «Как конвертировать 41 гекс в текст?», «Принимаемый ответ»: { «@напечатайте ответ», «текст»: «Использовать таблицу ASCII:
    41 = 4 × 16 ^ 1 + 1 × 16 ^ 0 = 64 + 1 = 65 = символ« A »

    Подробнее

    » } }, { «@type»: «Вопрос», «name»: «Как конвертировать 30 шестнадцатеричных в текст?», «Принимаемый ответ»: { «@напечатайте ответ», «текст»: «Использовать таблицу ASCII:
    30 = 3 × 16 ^ 1 + 0 × 16 ^ 0 = 48 = ‘0’ символ

    шестнадцатеричный в ASCII таблица преобразования текста

    Шестнадцатеричный Binary ASCII
    Символ
    00 00000000 NUL
    01 00000001 SOH
    02 00000010 STX
    03 00000011 ETX
    04 00000100 EOT
    05 00000101 ENQ
    06 00000110 ACK
    07 00000111 BEL
    08 00001000 BS
    09 00001001 HT
    0A 00001010 LF
    0B 00001011 VT
    0C 00001100 FF
    0D 00001101 CR
    0E 00001110 SO
    0F 00001111 SI
    10 00010000 DLE
    11 00010001 DC1
    12 00010010 DC2
    13 00010011 DC3
    14 00010100 DC4
    15 00010101 NAK
    16 00010110 SYN
    17 00010111 ETB
    18 00011000 CAN
    19 00011001 EM
    1A 00011010 SUB
    1B 00011011 ESC
    00011100 FS
    1D 00011101 GS
    1E 00011110 RS
    1F 00011111 US
    20 00100000 Космос
    21 00100001!
    22 00100010 «
    23 00100011 #
    24 00100100 $
    25 00100101%
    26 00100110 и
    27 00100111
    28 00101000 (
    29 00101001)
    2A 00101010 *
    2B 00101011 +
    2C 00101100,
    2D 00101101
    2E 00101110.
    2F 00101111/
    30 00110000 0
    31 00110001 1
    32 00110010 2
    33 00110011 3
    34 00110100 4
    35 00110101 5
    36 00110110 6
    37 00110111 7
    38 00111000 8
    39 00111001 9
    3A 00111010:
    3B 00111011;
    3C 00111100 <
    3D 00111101 =
    3E 00111110>
    3F 00111111?
    40 01000000 @
    41 01000001 A
    42 01000010 B ​​
    43 01000011 C
    44 01000100 D
    45 01000101 E
    46 01000110 F
    47 01000111 G
    48 01001000 H
    49 01001001 I
    4A 01001010 J
    4B 01001011 К
    4C 01001100 L
    4D 01001101 М
    4E 01001110 N
    4F 01001111 O
    50 01010000 P
    51 01010001 Q
    52 01010010 R
    53 01010011 S
    54 01010100 T
    55 01010101 U
    56 01010110 V
    57 01010111 Вт
    58 01011000 X
    59 01011001 Y
    01011010 Z
    5B 01011011 [
    5C 01011100 \
    5D 01011101]
    5E 01011110 ^
    5F 01011111 _
    60 01100000 `
    61 01100001 а
    62 01100010 б
    63 01100011 c
    64 01100100 д
    65 01100101 и
    66 01100110 ф
    67 01100111 г
    68 01101000 ч
    69 01101001 и
    01101010 j
    6B 01101011 к
    6C 01101100 л
    6D 01101101 м
    6E 01101110 n
    6F 01101111 o
    70 01110000 р
    71 01110001 q
    72 01110010 р
    73 01110011 с
    74 01110100 т
    75 01110101 u
    76 01110110 v
    77 01110111 Вт
    78 01111000 x
    79 01111001 и
    01111010 z
    7B 01111011 {
    7C 01111100 |
    7D 01111101}
    7E 01111110 ~
    7F 01111111 DEL


    См. Также

    ,
    python — Как я могу расшифровать RC4, используя шестнадцатеричные значения? Переполнение стека
    1. Товары
    2. Клиенты
    3. Случаи использования
    1. Переполнение стека Публичные вопросы и ответы
    2. Команды Частные вопросы и ответы для вашей команды
    3. предприятие Частные вопросы и ответы для вашего предприятия
    4. работы Программирование и связанные с ним технические возможности карьерного роста
    5. Талант Нанимать технический талант
    .Шифрование
    — Расшифровка Java AES получает расшифрованный шестнадцатеричный код вместо расшифрованной строки Переполнение стека
    1. Товары
    2. Клиенты
    3. Случаи использования
    1. Переполнение стека Публичные вопросы и ответы
    2. Команды Частные вопросы и ответы для вашей команды
    3. предприятие Частные вопросы и ответы для вашего предприятия
    4. работы Программирование и связанные с ним технические возможности карьерного роста
    5. Талант Нанимать технический талант
    6. реклама Связаться с разработчиками по всему миру
    ,
    ASCII в Hex | Преобразование текста в шестнадцатеричный код

    Введите текстовую строку ASCII / Unicode и нажмите кнопку Convert :

    folder_open Открыть файл поиск

    Вставить текст или удалить текстовый файл

    Кодировка символов ASCII Unicode UTF-8, UTF-16 UTF-16 с прямым порядком байтов UTF-16 с прямым порядком байтов Windows-1252 Big5 (китайский) CP866 (русский) EUC-JP (японский) EUC-KR (корейский) GB 18030 (китайский) GB 2312 (китайский) ISO-2022-CN (китайский) ISO-2022-JP (японский) ISO-8859-1 (Latin1 / западноевропейский) ISO-8859-2 (Латинская 2 / Восточноевропейская) ISO-8859-3 (Latin3 / Южно-Европейский) ISO-8859-4 (Latin4 / Северная Европа) ISO-8859-5 (латиница / кириллица) ISO-8859-6 (латинский / арабский) ISO-8859-7 (латинский / греческий) ISO-8859-8 (латинский / иврит) ISO-8859-8-I (латиница / иврит) ISO-8859-10 (Latin6 / Nordic) ISO-8859-13 (Latin7 / Балтийский обод) ISO-8859-14 (Latin8 / кельтский) ISO-8859-15 (Latin9 / западноевропейский) ISO-8859-16 (Latin10 / Юго-Восточная Европа) KOI8-R (русский) КОИ8-У (украинский) Macintosh (x-mac-roman) Mac OS Кириллица (x-mac-кириллица) Shift JIS (японский) Windows-874 (тайский) Windows-1250 (восточноевропейская) Windows-1251 (кириллица) Windows-1252 (западноевропейская) Windows-1253 (греческий) Windows-1254 (турецкий) Windows-1255 (иврит) Windows-1256 (арабский) Windows-1257 (Балтика) Windows-1258 (вьетнамский) X-User-Defined

    Строка выходного разделителя (необязательно)

    автообновление Конвертировать очистить Сбросить swap_vert Swap

    content_copy Копировать save_alt Save

    Как конвертировать текст в шестнадцатеричный код

    Преобразование текста в шестнадцатеричный код ASCII:

    1. Получить персонаж
    2. Получить десятичный код символа из таблицы ASCII
    3. Преобразование десятичного числа в шестнадцатеричный байт
    4. Продолжить со следующим персонажем
    Пример

    Преобразовать текст «Сажать деревья» в шестнадцатеричный код ASCII:

    Решение:

    Используйте таблицу ASCII, чтобы получить код ASCII от символа.

    «P» => 80 = 5 × 16 1 + 0 × 16 0 = 50 16

    «l» => 108 = 6 × 16 1 + 12 × 16 0 = 6C 16

    «a» => 97 = 6 × 16 1 + 1 × 16 0 = 61 16

    Для всех текстовых символов вы должны получить шестнадцатеричные байты:

    «50 6C 61 6E 74 20 74 72 65 65 73»

    Как преобразовать текст ASCII в шестнадцатеричный формат?

    1. Получить персонаж
    2. Получить код символа ASCII из таблицы ASCII
    3. Преобразование десятичного числа в шестнадцатеричный байт
    4. Продолжить со следующим персонажем

    Как использовать ASCII Text в Hex конвертер?

    1. Вставить текст в поле ввода текста.
    2. Выберите тип кодировки символов.
    3. Выберите строку выходного разделителя.
    4. Нажмите кнопку Преобразовать.

    Как преобразовать английский в шестнадцатеричный код?

    1. Получить английское письмо
    2. Получить ASCII код английской буквы из таблицы ASCII
    3. Преобразование десятичного числа в шестнадцатеричный байт
    4. Продолжить со следующей английской буквы

    Как преобразовать символ «А» в гекс?

    Используйте таблицу ASCII:
    ‘A’ = 65 10 = 4 × 16 + 1 = 4 × 16 1 + 1 × 16 0 = 41 16

    Как преобразовать символ «0» в гекс?

    Использование таблицы ASCII:
    ‘0’ = 48 10 = 3 × 16 = 3 × 16 1 + 0 × 16 0 = 30 16

    ASCII текст в шестнадцатеричный формат, таблица двоичного преобразования

    ASCII
    Символ
    шестнадцатеричный Binary
    NUL 00 00000000
    SOH 01 00000001
    STX 02 00000010
    ETX 03 00000011
    EOT 04 00000100
    ENQ 05 00000101
    ACK 06 00000110
    BEL 07 00000111
    BS 08 00001000
    HT 09 00001001
    LF 0A 00001010
    VT 0B 00001011
    FF 0C 00001100
    CR 0D 00001101
    SO 0E 00001110
    SI 0F 00001111
    DLE 10 00010000
    DC1 11 00010001
    DC2 12 00010010
    DC3 13 00010011
    DC4 14 00010100
    NAK 15 00010101
    SYN 16 00010110
    ETB 17 00010111
    CAN 18 00011000
    EM 19 00011001
    SUB 1A 00011010
    ESC 1B 00011011
    FS 00011100
    GS 1D 00011101
    RS 1E 00011110
    US 1F 00011111
    Космос 20 00100000
    ! 21 00100001
    « 22 00100010
    # 23 00100011
    $ 24 00100100
    % 25 00100101
    и 26 00100110
    27 00100111
    ( 28 00101000
    ) 29 00101001
    * 2A 00101010
    + 2B 00101011
    , 2C 00101100
    2D 00101101
    2E 00101110
    / 2F 00101111
    0 30 00110000
    1 31 00110001
    2 32 00110010
    3 33 00110011
    4 34 00110100
    5 35 00110101
    6 36 00110110
    7 37 00110111
    8 38 00111000
    9 39 00111001
    : 3A 00111010
    ; 3B 00111011
    < 3C 00111100
    = 3D 00111101
    > 3E 00111110
    ? 3F 00111111
    @ 40 01000000
    A 41 01000001
    B 42 01000010
    C 43 01000011
    D 44 01000100
    E 45 01000101
    F 46 01000110
    G 47 01000111
    H 48 01001000
    I 49 01001001
    J 4A 01001010
    K 4B 01001011
    L 4C 01001100
    М 4D 01001101
    N 4E 01001110
    O 4F 01001111
    P 50 01010000
    Q 51 01010001
    R 52 01010010
    S 53 01010011
    T 54 01010100
    U 55 01010101
    V 56 01010110
    W 57 01010111
    X 58 01011000
    Y 59 01011001
    Z 01011010
    [ 5B 01011011
    \ 5C 01011100
    ] 5D 01011101
    ^ 5E 01011110
    _ 5F 01011111
    ` 60 01100000
    a 61 01100001
    б 62 01100010
    c 63 01100011
    д 64 01100100
    и 65 01100101
    f 66 01100110
    г 67 01100111
    ч 68 01101000
    и 69 01101001
    j 01101010
    к 6B 01101011
    л 6C 01101100
    м 6D 01101101
    n 6E 01101110
    или 6F 01101111
    р 70 01110000
    q 71 01110001
    р 72 01110010
    с 73 01110011
    т 74 01110100
    и 75 01110101
    v 76 01110110
    Вт 77 01110111
    x 78 01111000
    и 79 01111001
    z 7A 01111010
    { 7B 01111011
    | 7C 01111100
    } 7D 01111101
    ~ 7E 01111110
    DEL 7F 01111111

    Hex в ASCII конвертер ►


    См. Также

    ,

    alexxlab

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *