Как известно любая информация будь то текст, изображение или видео, по сути, является ничем иным как набором двоичного кода — последовательности нулей и единиц. Именно в таком виде на жёстком диске хранятся данные. Понятие двоичный код едва ли не абстрактное, это не запись в привычном понимании этого слова, двоичный или машинный код это скорее состояние микроскопических ячеек на магнитной поверхности жесткого диска. Положительный заряд такой ячейки имеет знак плюс или 1, отрицательный — минус или 0.
Логически объединенные последовательности нулей и единиц как раз и составляют то, что мы называем файлами. Но ведь мы знаем и то, что типов файлов очень много. Есть текстовые файлы, мультимедийные, архивные, системные, исполняемые и так далее. Каким же образом операционная система определяет как читать или обрабатывать тот или иной файл? Прикладные программы распознают тип файла по его расширению — набору символов следующих после имени файла и отделенных от него точкой.
Но что будет, если расширение удалить? Всё правильно, операционная система не сможет открыть такой файл, так как не будет знать какую программу для этого использовать. Однако ни логическая структура, ни содержимое переименованного файла от этого не изменится. Вы и сами в этом можете убедиться удалив расширение какого-нибудь файла, а затем попробовав его открыть соответствующей программой. Уверены, с этим у вас проблем не возникнет.
Следовательно, вовсе не расширение определяет тип файла. Тогда что же? Тип файла определяет его формат или иначе спецификация структуры данных. Расширение и формат очень часто путают, хотя на деле это совершенно разные понятия. Тут возникает вполне закономерный вопрос, а как определить формат файла, если его расширение по какой-то причине оказалось утрачено? Оказывается очень просто.
Грубо говоря, все файлы состоят из двух частей. Первая часть это заголовок, содержащий различную метаинформацию включая те данные, которые позволяют прикладным программам этот самый файл идентифицировать. Вторая часть это «тело» файла. Отвечающая за определение типа файла часть заголовка файла именуется дескриптором или описанием. Наиболее распространёнными типами дескрипторов являются HEX и ASCII. Первый тип заголовков можно просмотреть только с помощью специальных утилит — шестнадцатеричных редакторов
Для просмотра дескрипторов второго типа можно обойтись обычным текстовым редактором, тем же Блокнотом или Notepad++. Однако следует учитывать, что далеко не все последовательности байтов можно перевести в ASCII-код, поэтому для определения формата всё-таки лучше использовать HEX-редакторы. Открытый в HEX-редакторе файл отображается в виде матрицы из последовательности байтов. Каждая ячейка соответствует одному байту. Данные дескриптора содержатся как раз в первых трёх ячейках (реже двух или четырех), расположенных по горизонтали. Представляют они из себя шесть символов в шестнадцатеричном счислении, например 49 44 33 или ff d8 e0
Естественно они нуждаются в расшифровке. А расшифровать их можно на специальных сайтах с описаниями форматов. Одним из лучших сайтов, где можно определить формат по HEX-дескриптору является open-file.ru. Есть и другие подобные ресурсы, но они не настолько удобны. На open-file.ru же имеется специальная поисковая форма, куда можно вставить HEX или ASCII дескриптор и пробить его по базе данных. Система быстро найдёт соответствующий формат и предоставит вам его полное описание.
С HEX-редакторами всё более или менее понятно, но как мы сказали для определения ASCII-заголовков также можно использовать редакторы текстовые. Принцип здесь тот же самый, открываем файл Блокнотом или Notepad++, копируем первые символы и вставляем их в поисковое поле того же open-file или другого сайта с поддержкой поиска по заголовкам.
Казалось бы всё очень просто, но есть в деле идентификации форматов и свои сложности. Иногда ASCII-заголовки совпадают с расширением файла (RAR и PDF), но может быть и такое, что заголовок оказывается принадлежащим сразу нескольким форматам. Это можно видеть на примере офисного формата DOCX (PK и 50 4b 03 04). В таких случаях точно определить формат проблематично.
Но круг поиска можно сузить. Для этого рекомендуется просматривать первую, вторую и третью строку заголовка в текстовом редакторе, так как содержащиеся в них элементы также могут косвенно указывать на принадлежность к тому или иному типу файлов.
Так, строка [Content_Types].xml в DOCX явно указывает на то, что исследуемый файл является размеченным текстовым документом.
Введение
Недавно у меня появилась мысль научиться считать в шестнадцатеричной системе счисления. Так как я человек ленивый, такие способы, как выучить таблицу умножения меня не устраивали. Немного поразмыслив, я вспомнил, что каждое утро решаю (иногда несколько раз) несложный пример, чтобы отключить будильник. Помогает слабо, со временем я начал решать почти не просыпаясь. Так почему бы не совместить полезное с полезным?
Осталось выбрать способ реализации. Так как я не имею не малейшего представления о разработке под андроид (да и вообще с Java не сильно знаком), да и писать свое приложение ради такой мелочи — это стрельба из пушки по воробьям, было решено модифицировать уже имеющийся будильник.
Под катом вы найдете описание инструментов, процесса и результата перевода примера в hex. А также объяснение синтаксиса smali кода (язык опкодов для виртуальной машины dalvik). Картинок почти нет, буков много.
Немного о структуре .apk
Приложение .apk — это файл упакованный zip’ом. Внутри содержатся файлы ресурсов, AndroidManifest.xml и classes.dex. Второе — это файл в котором содержатся основные сведения о приложении, как-то: информация об основном Activity, список прав, запрашиваемых при установке, и прочая не важная для наших целей информация. classes.dex — скомпилированный для виртуальной машины dalvik байт-код. Его мы можем перевести в jar и получить более или менее читаемый код на Java. Чем мы сейчас и займемся.
Получение читабельного кода
Итак мы получили почти читаемый код, хотя кое-где декомпилятор явно плющит.
Декомпиляция и чтение .smali файлов
Так как java код read-only, исправлять придется в опкодах виртуальной машины. Их всего чуть меньше 256 штук. Для декомпиляции можно использовать упомянутый выше Apk Manager или более консольный apktool. Впрочем первое является лишь красивой оберткой второго, с добавлением некоторых дополнительных функций(например разархивация и выбор уровня сжатия). После декомпиляции получаем папку с файлами с расширением .smali. Это и есть те самые опкоды. Их уже можно читать любым текстовым редактором. Но неплохо было бы обзавестись какой-нибудь подсветкой. Я пользовался подсветкой для Notepad++, но есть так же и для vim.
Первая кровь
Для начала неплохо было бы сделать генерацию чисел не до 10, а до 15. Изучаем код, и находим метод генерации примера. Поискать его придется, классов в деревьях много. Но так как названия методов сохранились, это не очень сложно.
Ну вроде все, просто: генерируем 3 числа и 2 знака, и кладем результат в this.x (это нам, кстати, пригодится).
Теперь находим этот же метод в smali-коде (к сожалению в онлайне нету хайлайтеров smali кода, а свой писать лениво, поэтому код будет скринами).
(Код метода продолжается дальше)
Код непонятный, но явно видно что константы задаются один раз в начале. Поэтому меняем 0xa на 0xf и пытаемся увидеть изменения, чтобы знать что мы на верном пути. С помощью Apk Manager собираем, подписываем, перекачиваем на телефон (можно тестировать на эмуляторе, если установлен Android SDK), устанавливаем, ставим будильник на минуту вперед, ждем, смотрим. Эту процедуру придется повторять большое количество раз. Числа на экране увеличились, ошибок не возникает. Отлично! Теперь самое время немного разобраться в непонятном smali коде.
Разбираемся в smali коде
Типы, методы, поля
В dalvik опкодах есть два вида типов: примитивные(primitive) и ссылочные(reference). Примитивные типы обозначаются одной буквой (например I — int, V — void), полный список здесь.
Ссылочные типы — это объекты и массивы, или, иными словами, все кроме примитивных типов. В коде обозначаются как
где L в начале означает, что это объект, а; — конец имени. Данная запись будет эквивалентнаLpackage/name/ObjectName;
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()и его же в smali коде
{
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);
}
.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 находим строчку
гуглим, находим список значений inputType, меняем на «text».<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" />
Теперь осталось научится преобразовывать ввод так, чтобы он совпадал с результатом вычисленным при генерации (RingerActivity.x, помните?). Ищем и находим следующий код
…Понять что-либо довольно сложно, но видим некоторую связь solution и com/splunchy/android/alarmclock/RingerActivity$9. Оказывается последнее — это smali файл, который, судя по всему jd-gui не смог адекватно отобразить. Идем туда и находим нужный нам метод сравнения!
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);
…
…Ну что, добавляем перевод в верхний регистр строке, прочитанной из поля ввода, благо этому мы уже научились. После этого заменяем
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
Система счисления, которую люди используют для подсчёта, называется десятичной (числа от 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 может понадобиться обычному человеку, чтобы посмотреть в нём некую информацию. На самом деле для такой простой задачи вполне достаточно обычного Блокнота – стандартного приложения, которое имеется в любой системе Windows. Ведь этот файл, по сути, является текстовым, просто в нём записана специфическая информация, но обычными символами.
Для этого достаточно кликнуть на файле правой кнопкой мыши, выбрать в меню пункт «Открыть» или «Открыть с помощью», затем «Выбрать из списка установленных программ», а далее просто выбрать стандартный Блокнот. Снимите галочку с пункта «Использовать выбранную программу для всех файлов этого типа» – вдруг вы его потом будете открывать другой программой. Можно просто открыть Блокнот, а файл в него перетащить, и он откроется.
Гораздо удобнее для открытия таких файлов подходит другая версия Блокнота – Notepad++. Скачать можно по этой ссылке. Эта программа также есть у многих, так как более удобна. Но она может к тому же распознавать многие языки программирования и файлы HEX в ней выглядят гораздо удобнее, так как есть выделение цветом. Notepad++ представляет собой как бы примитивный HEX-редактор, и этим можно пользоваться совершенно свободно.
Так выглядит HEX-файл, открытый в Notepad++. В стандартном Блокноте так же, но без цвета.
А теперь рассмотрим более подробно, для чего может понадобиться открывать, а тем более изменять файлы с шестнадцатеричным содержимым. Кстати, если вы собираетесь делать это часто, то лучше скачайте и установите специальный HEX-редактор – их в Интернете довольно много. Некоторые из них подробнее рассматриваются далее.
Взлом игр и файлов
Популярная причина, по которой вы можете использовать шестнадацтеричный редактор, – взлом игр. Вы можете загрузить документ сохранения игры и изменить сумму денег, например, от 1000 до 1000000 долларов. В более поздних играх всё сделано намного сложнее. Многие современные игры используют либо сжатие, либо шифрование, что во много раз затрудняет декомпиляцию состояния сохранения или игры. Тем не менее, некоторые игры по-прежнему позволяют редактировать определённые переменные, например, Sonic Spinball. В дополнение к просмотру файлов игры, из сохранённого файла иногда можно извлечь другую важную информацию, к которой у вас иначе не было бы доступа. Это сильно зависит от типа файла и того, какую информацию вы ищете, но использование шестнадцатеричного редактора полезно для определения того, что именно находится в документе.
Отладка и редактирование
Наконец, еще одна популярная причина, по которой вы можете использовать шестнадцатеричный редактор, – это если вы программист, и вам нужно отладить код. Вместо того, чтобы возвращаться к перекомпиляции кода, для проверки шаблона может потребоваться простое шестнадцатеричное редактирование. Но для начала обязательно убедитесь, что у вас есть резервная копия, прежде чем изменять какие-либо файлы с помощью шестнадцатеричного редактора.
Какие hex-редакторы использовать
Шестнадцатеричный редактор представляет собой софт, используемый для просмотра и редактирования бинарных файлов. Двоичный документ представляет собой документ, который содержит данные в машиночитаемой форме. HEX-редакторы позволяют изменять содержимое необработанных данных файла. Поскольку шестнадцатеричный редактор используется для редактирования двоичных файлов, их иногда называют двоичным редактором или редактором двоичных файлов. Если открыть документ с помощью шестнадцатеричного редактора, появится сообщение о том, что документ редактируется в шестнадцатеричном формате, а процесс использования шестнадцатеричного редактора называется шестнадцатеричным редактированием. Шестнадцатеричные редакторы отличаются от обычных текстовых рядом функций. Основой шестнадцатеричного редактора является то, что они отображают необработанное содержимое файла. Нет кодирования или перевода в текст – только необработанный машинный код. Во-вторых, номера строк вместо того являются адресом смещения от начала файла. Мы подобрали несколько лучших бесплатных программ для просмотра и редактирования документов HEX.
HxD
HxD – это бесплатный шестнадцатеричный редактор, который может открывать и изменять компьютерный код. Это очень мощная утилита в правильных руках, которая может проверять, сравнивать и диагностировать файлы, диски, образы дисков, память и журналы, а также исправлять ошибки и восстанавливать структуру диска.
Преимущества:
- Действительно большие данные – последняя версия HxD обрабатывает большие наборы данных. Если он помещается на диск, HxD сможет его открыть.
- Стандартные параметры – HxD содержит множество полезных дополнений, таких как генератор контрольных сумм, поддержка нескольких наборов символов, редактор ОЗУ, уничтожитель файлов, разбиение и объединение, неограниченное количество отмен и портативная версия.
- Экспорт данных – программа экспортирует данные в исходный код (C, C#, Java, Pascal и VB.NET) или в шестнадцатеричные форматы.
Недостатки:
- Не для неопытного пользователя, но это не недостаток. Программа ориентирована на продвинутых пользователей.
DeltaHex Editor
Один из лучших hex-редакторов на основе библиотеки deltahex. Используйте действие «Открыть как шестнадцатеричный» в главном меню «Файл» или в контекстном меню файлов проекта.
Характеристики:
- Отображение данных в виде шестнадцатеричного кода, предварительный просмотр текста.
- «Вставить» и «Перезаписать» режимы редактирования.
- Поддержка выбора и буфера обмена.
- Отмена/повтор.
- Выбор кодировки.
- Отображение непечатных символов.
- Коды также могут быть двоичными, восьмеричными или десятичными.
- Поиск текстового/шестнадцатеричного кода с соответствующей подсветкой.
- Дельта-режим – изменения сохраняются только в памяти до сохранения.
- Поддержка огромных файлов.
Free Hex Editor Neo
Free Hex Editor Neo – это самый быстрый бесплатный редактор двоичных файлов для платформы Windows. Алгоритмы обработки данных Neo Hex Editor чрезвычайно оптимизированы и тщательно настроены для обработки операций с большими файлами.
Характеристики программы:
- Неограниченное Undo/Redo.
- Редактировать, Копировать, Вырезать, Вставить, Удалить, Заполнить, Импорт/Экспорт, Вставить шаблон/файл, Изменить размер файла, Смещение к началу, Изменить биты.
- Поиск и замена шаблонов.
- Подсветка.
- Байты, слова, двойные слова, группировка четырёх слов.
- Шестнадцатеричное, Десятичное, Восьмеричное, Двоичное и т.д. представление данных.
- Изменение атрибутов файла.
- Анализ данных буфера обмена.
- Создание бинарных патчей, поиск/замена регулярных выражений.
- Многоязычный интерфейс.
Функции и возможности утилиты:
- Статистика и шестнадцатеричный анализатор – модуль анализа двоичных данных позволяет анализировать распределение байтов, символов и строк по шестнадцатеричным дампам и текстовым данным. Анализатор двоичных файлов 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…», которая запускает специальный режим редактирования. Когда вы находитесь в этом режиме, вы можете увидеть местоположение и шестнадцатеричные значения каждого бита файла. У вас есть два варианта корректировки – вы можете редактировать шестнадцатеричные значения по местоположению, или справа у вас есть буквенно-цифровое представление этого значения, которое вы также можете редактировать.
XVI32
XVI32 также очень способный шестнадцатеричный редактор. Как и в PSPad, вы можете редактировать шестнадцатеричные значения напрямую или через отображение символов. В нём также есть несколько расширенных инструментов редактирования шестнадцатеричных кодов, таких как калькулятор адресов для проверки смещений и других специфичных для шестнадцатеричных данных параметров, которые могут помочь вам обойти шестнадцатеричный документ. Если вы, конечно, знаете, что делаете.
Знание того, как работает ваш ПК, становится всё более и более важным, поскольку техника становится всё проще и проще в использовании. Если у вас остались вопросы относительно редактирования шестнадцатеричных файлов, оставьте комментарий под этой статьёй.
HEX-редакторы и редактирование любых типов файлов
Сейчас будет большой материал на тему того, из чего состоят данные и как их можно редактировать. Многие знают, что любой файл на компьютере (картинка, текстовый или мультимедийный) представляет собой двоичный код – нули и единицы. Для редактирования таких файлов используются HEX-редакторы – приложение, редактирующее данные, состоящие из байтового кода. Байты в редакторе представлены в виде шестнадцатеричной системы.
Расширение файла
Проблема заключается в огромном количестве типов файлов и поначалу не ясно, каким образом операционная система определяет текстовые, мультимедийные или архивные и прочие типы данных. Как известно, определение файла системой осуществляется с помощью расширения, добавляемого после названия, например, «.exe», «.txt» и другие.
Настройки в ОС гибкие, а значит расширение любого файла можно удалить, но тогда операционная система не сможет открыть его, она не поймет, с помощью какой программы его запустить. При этом логическая структура объекта не изменится. На изображении видно текстовый файл, а рядом с ним тот же самое, но без расширения и иконка у него белая.
Если объект без расширения остается тем же самым файлом с логическим набором символом, значит расширение не определяет его тип, но тогда что? Есть такое понятие, как формат – это и определяет тип, также это есть спецификация структуры данных. Расширение же совершенно другой термин. А что делать, если пользователю изначально попался файл без расширения, но его срочно нужно открыть, а чем – неизвестно?
Дескрипторы
Все файлы можно грубо говоря разделить на две составляющие – заголовок, где содержатся данные идентификации объекта, различные метаданные. Вторая составляющая – «тело» объекта, с помощью которого определяется тип объекта и части заголовка, имеющего название дескриптора. Два популярных дескриптора – ASCII и HEX. Второй вариант анализируется при помощи редакторов, о которых было сказано в начале.
Первый метод ASCII определяется с помощью текстового редактора, например, Notepad++, правда, стоит учесть один момент – некоторые наборы байтов не удастся преобразовать в формат ASCII, а значит рекомендуется применять HEX-редакторы. Запустив любой файлик с помощью такой утилиты, в окне отобразится вид матрицы с последовательностью байтов, где один байт содержится в одной из ячеек. Сведения о дескрипторе обычно находятся в первых 3-х ячейках, редко в большем количестве. Ячейки считаются по горизонтали. Данные, отображённые в ячейках представлены в виде шестнадцатеричном коде.
Расшифровка дескриптора
Чтобы понять, что за данные там находятся, нужно код расшифровать. Для этого понадобится специальный сервис, определяющий форматы файлов, например, open-file.ru. Но есть и другие ресурсы, которые легко найти в интернете. После загрузки файла на сайт произойдет анализ данных, а затем вывод результата. Ниже появится таблица с типом, форматом и описанием файла.
То, что мы разобрали выше – использование HEX-редакторов. Теперь разберемся с кодом ASCII. Данный код можно проанализировать при помощи того же open-file.ru. Другими словами, оба кода проверяются на ресурсе и ничего по сути не нужно вводить.
Иногда формат определить не так просто. Это касается ASCII-заголовков. Дело в том, что первые несколько символов могут иметь отношение к расширениям файла, а может и к нескольким форматам.
Конечно, есть вариант определения формата. Для анализа будет использоваться несколько строк, а не одна. Тогда какой-то из элементов, находящийся там, по любому будет указывать на тип объекта.
Что еще можно делать с помощью HEX-редактора
Помимо того, что HEX-редакторы помогают проанализировать любой файл, возможно:
- работать с дисковыми образами;
- редактировать разделы;
- изменять содержимое ОЗУ;
- изменять виртуального адресного пространства процесса и прочее.
К примеру, утилиты подобного типа используют в разработке ПО. Когда необходимо внести данные уже после компиляции программы, но перекомпилировать ее не хочется. Любой код программы можно изменить с помощью HEX-редактора. Конечно, это нужно уметь делать, находить нужные данные. Таким образом, добиваются исправления ошибок в коде, либо используют для взлома и читерства. Это значит, применение HEX-редакторов очень широкое.
Какие HEX-редакторы использовать
Существует очень много программ для редактирования данных, и вот они представлены ниже:
Free Hex Editor Neo
Популярная утилита для Windows. С помощью неё пользователю не составит открыть любой тип файла и изменить его. Если что-то отредактировано не так, в утилите есть история изменений и всегда можно вернутся к изначальному состоянию.
Инструмент работает очень быстро, при этом не много весит, а сама способна работать с файлами большого объема. Интерфейс простой и подходит для новичков, присутствует русский язык.
WinHex
Данный редактор можно использовать в демо-версии некоторое время, а потом необходимо приобрести. Инструмент универсальный, где обнаружено много интересных опций.
Есть возможность работать не только с файлами, но и с жёсткими дисками, флеш-носителями, оптическим дисками и даже дискетами. Поддерживаются все файловые системы Windows. Поддерживает функции клонирования разделов и полного удаления данных без возможности восстановления
Если вы новичок, то этой программы вам хватит, тем более в разделе Help есть опция переключения на русскоязычный интерфейс.
HexCmp
Утилита 2 в 1, так как имеет функцию сравнения файлов и встроенный HEX-редактор. Иногда может понадобится сравнения данных файлов, для определения отличий и сходств, и анализа структуры объектов различных форматов.
При отличии в двух файлов области на матрице будут окрашены в какой-либо цвет, а само сравнение происходит в считанные секунды. Правда, для анализа подойдут файлы не более 4 GB.
Сама утилита имеет возможности изменения интерфейса. Что значит, пользователь может настроить его под себя. Работа будет происходить быстрее.
HxD Hex Editor
Эта штука поставляется бесплатно, но она способна работать с объемными данными любых форматов и кодировок. Есть возможность изменения оперативной памяти и жёсткого диска.
Программа сочетает в себе вывод шестнадцатеричного кода и текстового ASCII. Интерфейс для англоязычного интерфейса вполне прост, поэтому работа с ним не составит труда, особенно, если вы уже работали в подобных редакторах.
Hex Workshop
Если какой-то файл не открылся в одном редакторе, значит откроется в этом. Поэтому я и привел здесь список из нескольких утилит. Указанный инструмент отвечает за открытие бинарных файлов. Настроек много, а системные требования доступны для любого компьютера.
Работа в этом редакторе проста, как при печати в Word. Есть опции сравнения файлов, их контрольных сумм и экспорт анализа в различные форматы, например, html.
Если необходимо перевести один код в другую систему счисления, то в Hex Workshop присутствует конвертер. Программка условно-бесплатная, что можно считать одним из недостатков.
Вот вы узнали, что такое HEX-редакторы и зачем они используются. В будущем постараюсь написать статьи по работе с ними, например, когда необходимо отредактировать какой-то файл.
В HTML 4.0 было определено лишь 16 цветов (они представлены ниже в таблице Первоначальные цвета), но в более поздних версиях добавилось еще 130 цветов.
Цвета, представленные в шестнадцатеричном формате, поддерживаются всеми основными браузерами. Шестнадцатеричный код цвета имеет формат #RRGGBB, где RR — красный, GG — зеленый и BB— голубой.
Эти значения определяют компоненты цвета, они могут быть в диапазоне от 0 до FF. Если код цвета представляет собой повторяющиеся значения, то его можно записывать в кратком формате вида #RGB, например, черный цвет можно записать как #000000 и #000.
Также можно объявлять цвета по их названию — ключевому слову. В данной таблице представлены ключевые слова, поддерживаемые всеми браузерами. Следует обратить внимание, что некоторые цвета могут задаваться несколькими ключевыми словами, например, цвету #FF00FF соответствуют ключевые слова Fuchsia и Magenta, также серый цвет #808080 может записываться как Gray и как Grey.
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
Возможно, вам также будут интересны статьи:
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. >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
Введите шестнадцатеричные байты с любым префиксом / постфиксом / разделителем и нажмите кнопку Преобразование в
(например, 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 в текст:
- Получить шестнадцатеричный байт
- Преобразование шестнадцатеричного байта в десятичное
- Получить символ кода ASCII из таблицы ASCII
- Продолжить со следующего байта
Пример
Преобразовать шестнадцатеричный 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 в текст?
- Получить шестнадцатеричный байт-код
- Преобразование шестнадцатеричного байта в десятичное
- Получить символ десятичного кода ASCII из таблицы ASCII
- Продолжить со следующим шестнадцатеричным байтом
Как использовать Hex в ASCII Text Converter?
- Вставьте шестнадцатеричные байтовые коды в текстовое поле ввода.
- Выберите тип кодировки символов.
- Нажмите кнопку Преобразовать.
Как конвертировать шестнадцатеричный код в английский?
- Получить шестнадцатеричный байт-код
- Преобразование шестнадцатеричного байта в десятичное
- Получить английскую букву десятичного кода ASCII из таблицы ASCII
- Продолжить со следующим шестнадцатеричным байтом
Как конвертировать 41 гекс в текст?
Использовать таблицу ASCII:
41 = 4 × 16 ^ 1 + 1 × 16 ^ 0 = 64 + 1 = 65 = символ «A»
Как конвертировать 30 шестнадцатеричных в текст?
Использовать таблицу ASCII:
30 = 3 × 16 ^ 1 + 0 × 16 ^ 0 = 48 = «0» символ
- Получить шестнадцатеричный байт-код
- Преобразование шестнадцатеричного байта в десятичное
- Получить символ десятичного кода ASCII из таблицы ASCII
- Продолжить со следующим шестнадцатеричным байтом
Подробнее
» } }, { «@type»: «Вопрос», «name»: «Как использовать Hex в ASCII Text Converter?», «Принимаемый ответ»: { «@напечатайте ответ», «text»: «- Вставить шестнадцатеричные байтовые коды в текстовое поле ввода.
- Выберите тип кодировки символов.
- Нажмите кнопку Преобразовать.
Подробнее
» } }, { «@type»: «Вопрос», «name»: «Как преобразовать шестнадцатеричный код в английский?», «Принимаемый ответ»: { «@напечатайте ответ», «текст»: «- Получить шестнадцатеричный байт-код
- Преобразование шестнадцатеричного байта в десятичное
- Получить английскую букву десятичного кода ASCII из таблицы ASCII
- Продолжить со следующим шестнадцатеричным байтом
Подробнее
» } }, { «@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 |
1С | 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 |
5А | 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 | и |
6А | 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 | и |
7А | 01111010 | z |
7B | 01111011 | { |
7C | 01111100 | | |
7D | 01111101 | } |
7E | 01111110 | ~ |
7F | 01111111 | DEL |
См. Также
,- Товары
- Клиенты
- Случаи использования
- Переполнение стека Публичные вопросы и ответы
- Команды Частные вопросы и ответы для вашей команды
- предприятие Частные вопросы и ответы для вашего предприятия
- работы Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимать технический талант
- Товары
- Клиенты
- Случаи использования
- Переполнение стека Публичные вопросы и ответы
- Команды Частные вопросы и ответы для вашей команды
- предприятие Частные вопросы и ответы для вашего предприятия
- работы Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимать технический талант
- реклама Связаться с разработчиками по всему миру
Введите текстовую строку 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:
- Получить персонаж
- Получить десятичный код символа из таблицы ASCII
- Преобразование десятичного числа в шестнадцатеричный байт
- Продолжить со следующим персонажем
Пример
Преобразовать текст «Сажать деревья» в шестнадцатеричный код 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 в шестнадцатеричный формат?
- Получить персонаж
- Получить код символа ASCII из таблицы ASCII
- Преобразование десятичного числа в шестнадцатеричный байт
- Продолжить со следующим персонажем
Как использовать ASCII Text в Hex конвертер?
- Вставить текст в поле ввода текста.
- Выберите тип кодировки символов.
- Выберите строку выходного разделителя.
- Нажмите кнопку Преобразовать.
Как преобразовать английский в шестнадцатеричный код?
- Получить английское письмо
- Получить ASCII код английской буквы из таблицы ASCII
- Преобразование десятичного числа в шестнадцатеричный байт
- Продолжить со следующей английской буквы
Как преобразовать символ «А» в гекс?
Используйте таблицу 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 | 1С | 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 | 5А | 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 | 6А | 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 конвертер ►