Что такое формат Intel HEX. Как устроена структура записей в файле Intel HEX. Какие поля содержит каждая запись Intel HEX. Как вычисляется контрольная сумма в Intel HEX. Для чего используются разные типы записей в Intel HEX.
Что представляет собой формат Intel HEX
Intel HEX — это текстовый формат файла для хранения двоичных данных. Он был разработан компанией Intel для программирования микроконтроллеров и других устройств. Основные характеристики формата:
- Файл состоит из текстовых ASCII-строк
- Каждая строка представляет собой отдельную запись
- Записи содержат адреса, данные и служебную информацию
- Двоичные данные кодируются шестнадцатеричными цифрами
- Используется для прошивки микроконтроллеров и программируемых устройств
Структура записи в файле Intel HEX
Каждая запись в файле Intel HEX имеет следующую структуру:
- Стартовый код (1 символ)
- Количество байт данных (2 символа)
- Адрес (4 символа)
- Данные (переменное количество символов)
- Контрольная сумма (2 символа)
Все поля записи кодируются шестнадцатеричными цифрами, кроме стартового кода. Рассмотрим каждое поле подробнее.

Поля записи Intel HEX
Стартовый код
Стартовый код всегда состоит из одного символа двоеточия (:). Он обозначает начало новой записи в файле.
Количество байт данных
Это поле указывает, сколько байт данных содержится в текущей записи. Кодируется двумя шестнадцатеричными цифрами, то есть может принимать значения от 00 до FF (0-255 в десятичной системе).
Адрес
Адрес задает начальное смещение для данных в этой записи. Кодируется 4 шестнадцатеричными цифрами, то есть может принимать значения от 0000 до FFFF (0-65535). Это 16-битный адрес.
Тип записи
Тип записи определяет, как интерпретировать данные в этой записи. Основные типы:
- 00 — запись с данными
- 01 — запись конца файла
- 02 — запись расширенного сегментного адреса
- 03 — запись адреса начала сегмента
- 04 — запись расширенного линейного адреса
- 05 — запись адреса начала линейного сегмента
Данные
Это поле содержит собственно данные записи. Количество байт данных определяется вторым полем записи. Каждый байт кодируется двумя шестнадцатеричными цифрами.

Контрольная сумма
Контрольная сумма используется для проверки целостности записи. Она вычисляется по определенному алгоритму на основе всех предыдущих полей записи.
Как вычисляется контрольная сумма в Intel HEX
Алгоритм вычисления контрольной суммы в Intel HEX:
- Сложить все байты записи, кроме стартового кода и самой контрольной суммы
- От полученной суммы взять младший байт
- Вычислить дополнение до 2 для этого байта
- Результат и будет контрольной суммой
Контрольная сумма позволяет обнаружить ошибки при передаче или хранении данных в формате Intel HEX.
Типы записей в Intel HEX и их назначение
Рассмотрим основные типы записей и их назначение более подробно:
Запись с данными (тип 00)
Это основной тип записи, содержащий собственно данные для загрузки в память устройства. Поле адреса указывает, куда загружать эти данные.
Запись конца файла (тип 01)
Эта запись сигнализирует о завершении файла Intel HEX. Она не содержит данных и всегда имеет нулевой адрес.
Запись расширенного сегментного адреса (тип 02)
Позволяет задать базовый адрес для последующих записей с данными. Используется для адресации памяти свыше 64 КБ в реальном режиме процессоров x86.

Запись адреса начала сегмента (тип 03)
Указывает адрес, с которого следует начать выполнение программы после загрузки. Используется в реальном режиме процессоров x86.
Запись расширенного линейного адреса (тип 04)
Задает старшие 16 бит 32-битного линейного адреса. Позволяет адресовать память до 4 ГБ в защищенном режиме.
Запись адреса начала линейного сегмента (тип 05)
Указывает 32-битный линейный адрес для начала выполнения программы в защищенном режиме процессоров x86.
Пример файла Intel HEX
Рассмотрим пример простого файла в формате Intel HEX:
:10010000214601360121470136007EFE09D2190140
:100110002146017EB7C20001FF5F16002148011988
:00000001FF
Разберем первую строку этого файла:
- : — стартовый код
- 10 — 16 байт данных
- 0100 — адрес 0x0100
- 00 — тип записи (данные)
- 214601360121470136007EFE09D2190140 — данные
- 40 — контрольная сумма
Последняя строка — запись конца файла (тип 01).
Преимущества и недостатки формата Intel HEX
Формат Intel HEX имеет следующие преимущества:

- Простота — файл можно прочитать и отредактировать в любом текстовом редакторе
- Компактность — двоичные данные эффективно кодируются шестнадцатеричными цифрами
- Надежность — контрольные суммы позволяют обнаруживать ошибки
- Гибкость — поддерживает различные типы данных и адресации
Недостатки формата:
- Избыточность — текстовое представление увеличивает размер файла
- Ограниченная адресация — максимальный адрес 4 ГБ (32 бита)
- Отсутствие метаданных — нет информации о типе процессора, версии и т.д.
Применение формата Intel HEX
Intel HEX широко используется в следующих областях:
- Программирование микроконтроллеров и встраиваемых систем
- Прошивка EEPROM, флэш-памяти и других программируемых устройств
- Обмен двоичными данными между различными системами разработки
- Распространение прошивок и обновлений для электронных устройств
Формат поддерживается большинством программаторов и инструментов для работы с микроконтроллерами.
Инструменты для работы с Intel HEX
Существует множество инструментов для создания, редактирования и анализа файлов Intel HEX:

- HxD — шестнадцатеричный редактор с поддержкой Intel HEX
- srec_cat — утилита командной строки для конвертации форматов
- IntelHex — библиотека Python для работы с Intel HEX
- hex2bin — конвертер Intel HEX в двоичный формат
- IHex — онлайн-редактор и анализатор файлов Intel HEX
Эти инструменты упрощают работу с файлами Intel HEX при разработке встраиваемых систем и программировании микроконтроллеров.
СпецПромДизайн
Формат Intel-HEX
Введение
Шестнадцатиричный объектный формат файлов Intel-HEX (далее просто HEX-формат) – это способ представить двоичные данные в виде кодов ASCII. Поскольку файл состоит из символов ASCII, а не двоичных кодов, появляется возможность хранить данные на бумаге, перфоленте или перфокартах, выводить их на терминал, принтер и т.д. Восьмибитовый HEX-формат файлов предусматривает размещение данных и кода в 16-разрядном линейном адресном пространстве для 8-разрядных процессоров Intel. 16-разрядный HEX-формат файлов дополнительно позволяет использовать 20-разрядное сегментное пространство адресов 16-разрядных процессоров Intel. И, наконец, 32-разрядный формат позволяет оперировать линейным 32-разрядным адресным пространством 32-разрядных процессоров.
Шестнадцатиричное представление двоичных данных в виде ASCII требует использование двух символов для записи одного байта, при этом первый символ всегда
соответствует старшей тетраде битов одного байта. Такой подход увеличивает количество символов в двое по сравнению с количеством двоичных данных.
Формат файла организован в виде набора записей, содержащих сведения о типе, количестве данных, адресе их загрузки в память и дополнительные сведения. В настоящее время определены шесть различных типов записей, однако не все их комбинации определены для разных форматов данных.
Записи могут быть следующих типов:
- Данные (определена для всех форматов данных)
- Маркер конца файла (определена для всех форматов файла)
- Сегментный адрес (определена для 16- и 32-битных форматов)
- Сегментный адрес старта (определена для 16- и 32-битных форматов)
- Линейный адрес (определена только для 32-битного формата)
- Линейный адрес старта (определена только для 32-битнного формата)
Общий формат записей
Маркер записи |
Кол-во данных RECLEN |
Смещение |
Тип записи TYPEREC |
Данные DATA |
Контрольная сумма CHECKSUM |
: | 1 байт | 2 байта | 1 байт | RECLEN байт | 1 байт |
Каждая запись представляет собой ASCII-строку файла. В одной строке – одна запись.
Каждая запись начинается с МАРКЕРА ЗАПИСИ, который обозначается ASCII-символом двоеточие («:»).
Каждая запись содержит поле RECLEN, определяющее количество байтов данных или информационных байтов, назначение которых определяется типом записи. Максимальное значение этого поля – 255 (0xFF).
Каждая запись содержит поле OFFSET, определяющее 16-битное смещение в адресном пространстве байтов данных. Это поле используется только в записях данных, а в остальных случаях оно должно быть равно нулю.
Каждая запись содержит поле TYPEREC, определяющее тип текущей записи (из ранее упомянутых шести). Это поле используется для интерпретации всех остальных полей записи. Типы записей кодируются следующими значениями поля TYPEREC (в ASCII):
- «00» – данные
- «01» – маркер конца файла
- «02» – адрес сегмента
- «03» – сегментный адрес старта
- «04» – линейный адрес
- «05» – линейный адрес старта
Каждая запись содержит поле DATA переменной длины, которое содержит ноль или более байтов, закодированных символами ASCII.
Наконец, каждая запись завершается полем CHECKSUM, гарантирующим целостность всех данных записи. Значение этого поля равно дополнению по модулю 256 до нуля суммы по модулю 256 всех байтов, начиная с поля RECLEN и заканчивая последним байтом поля DATA. При считывании записи следует суммировать по модулю 256 все байты записи, включая поле CHECKSUM. Если в конце концов сумма равна нулю, это означает, что данные считаны без искажений, в противном случае данные недостоверны.
Запись «Линейный адрес»
Формат записи следующий:
Маркер записи |
Кол-во данных RECLEN |
Смещение OFFSET |
Тип записи TYPEREC |
Данные ULBA |
Контрольная сумма CHECKSUM |
: | 02 | 0000 | 04 | 2 байта | 1 байт |
Эта запись служит для задания значения битов 16-31 в линейном базовом адресе (LBA, Linear Base Address), причем биты 0-15 LBA равны нулю. Биты 16-31 LBA
определяются верхним линейным базовым адресом (ULBA, Upper Linear Base Address). Абсолютное значение адреса байта данных в памяти определяется как сумма значения LBA
и значения поля OFFSET в последующих записях данных, плюс индекс байта данных внутри поля DATA. Эта сумма выполняется без учёта переполнения результата (то есть
не может превышать 0xFFFFFFFF, 4 Гб).
Фактический линейный адрес байта данных вычисляется в итоге по формуле:
ByteAddr = (LBA + DRLO + DRI) mod 4G,
где: DRLO – значение поля OFFSET записи данных;
DRI – индекс байта в поле DATA записи данных;
mod 4G – операция «сложение по модулю 232«.
Когда запись «Линейный адрес» встречается в файле, вычисляется значение LBA, которое действует для всех последующих записей данных, пока не встретится снова запись «Линейный адрес». По умолчанию LBA = 0.
Запись «Адрес сегмента»
Формат записи следующий:
Маркер записи |
Кол-во данных RECLEN |
Смещение OFFSET |
Тип записи TYPEREC |
Данные USBA |
Контрольная сумма CHECKSUM |
: | 02 | 0000 | 04 | 2 байта | 1 байт |
Эта запись служит для задания значения битов 4-19 сегментного базового адреса (SBA, Segment Base Address), где биты 0-3 SBA равны нулю. Биты 4-19 SBA определяются верхним
базовым адресом сегмента (USBA, Upper Segment Base Address). Абсолютный адрес байта в записи данных вычисляется путем прибавления к SBA значения поля OFFSET записи данных и
индекса байта относительно начала поля DATA. Прибавление смещения (OFFSET) осуществляется по модулю 65536 (64 К), без учёта переполнения.
Таким образом, адрес конкретного байта вычисляется по формуле:
ByteAddr = SBA + (DRLO + DRI) mod 64K,
где: DRLO – значение поля OFFSET записи данных;
DRI – индекс байта в поле DATA записи данных;
mod 64K – операция «сложение по модулю 65536».
Когда запись «Адрес сегмента» встречается в файле, вычисляется значение SBA, которое действует для всех последующих записей данных, пока не встретится снова запись «Адрес сегмента». По умолчанию SBA = 0.
Запись данных
Формат записи следующий:
Маркер записи |
Кол-во данных RECLEN |
Смещение OFFSET |
Тип записи TYPEREC |
Данные DATA |
Контрольная сумма CHECKSUM |
: | 1 байт | 2 байта | 00 | RECLEN байтов | 1 байт |
Эта запись собственно и содержит данные. Метод вычисления фактического (абсолютного) адреса каждого байта данных в памяти определяется по вышеприведённым формулам и
зависит от формата данных.
Линейный адрес старта
Формат записи следующий:
Маркер записи |
Кол-во данных RECLEN |
Смещение OFFSET |
Тип записи TYPEREC |
Данные EIP |
Контрольная сумма CHECKSUM |
: | 04 | 0000 | 05 | 4 байта | 1 байт |
Запись «Линейный адрес старта» используется для указания адреса, с которого начинается исполнение объектного файла. Это значение заносится в регистр EIP процессора.
Следует обратить внимание, что эта запись определяет только точку входа сегмента кода для защищённого режима процессоров 80386. В обычном режиме точка старта определяется записью
«Сегментный адрес старта», которая определяет значения пары регистров CS:IP.
Запись «Линейный адрес старта» может находиться в любом месте файла. Если её нет, загрузчик использует адрес старта по умолчанию.
Значение регистра EIP процессора содержится в соответствующем поле записи, для него требуется всегда 4 байта.
Сегментный адрес старта
Формат записи следующий:
Маркер записи |
Кол-во данных RECLEN |
Смещение OFFSET |
Тип записи TYPEREC |
Данные CS:IP |
Контрольная сумма CHECKSUM |
: | 04 | 0000 | 03 | 4 байта | 1 байт |
Запись «Сегментный адрес старта» используется для указания адреса, с которого начинается исполнение объектного файла. Это значение определяет 20-битный адрес,
заносимый в регистры CS:IP процессора. Следует обратить внимание, что эта запись определяет только точку входа в 20-битном адресном пространстве процессоров 8086/80186.
Запись «Сегментный адрес старта» может находиться в любом месте файла. Если её нет, загрузчик использует значение по умолчанию.
Значение регистров CS:IP процессора содержится в соответствующем поле записи, для него требуется всегда 4 байта. Значение хранится в порядке «от старшего к младшему», то есть младший байт значения регистра IP хранится в четвертом байте поля CS:IP, старший – в третьем, затем во втором хранится младший байт значения регистра CS, и в первом – старший байт регистра CS.
Маркер конца файла (терминатор)
Формат записи следующий:
Маркер записи |
Кол-во данных RECLEN |
Смещение OFFSET |
Тип записи TYPEREC |
Контрольная сумма CHECKSUM |
: | 00 | 0000 | 01 | 1 байт |
Эта запись не содержит полей с изменяющимися данными, поэтому выглядит всегда совершенно одинаково: «:00000001FF».
Запись обозначает конец данных в файле. Все последующие строки, если они есть в файле, игнорируются.
Пример содержимого файла формата Intel-HEX
:10010000214601360121470136007EFE09D2190140
:100110002146017EB7C20001FF5F16002148011988
:10012000194E79234623965778239EDA3F01B2CAA7
:100130003F0156702B5E712B722B732146013421C7
:00000001FF
Маркер записи
Кол-во данных
Смещение
Тип записи
Данные
Контрольная сумма
Starline White Natural Hexagon Hex 25X30
Starline White Natural Hexagon Hex 25X30Starline
Доступные цвета
Доступные форматы
Вид данного продукта
Starline White Natural Hexagon Hex 25X30: G-7230
Толщина 10mm
Натуральный
Керамогранит
Starline — идеальный микс для создания эффектных композиций: формат и дизайн, нарушающие монотонность, дополняются ритмичным узором и линиями, которые навевают спокойствие.
Текстуры и интерьеры
Для скачивания текстур и интерьеров зарегестрируйтесь здесь.
HEX 25X30 PAVIMENTO
MCAJA: 0.935
PESOM: 23.280
PESOZ: 1.271
PESOCJ: 21.767
PZCAJA: 17
TIPOPZ: BASE
CJPALET: 48
PESOPALETS: 1067.816
КОЛЛЕКЦИЯ
Вдохновение для дома и любых других пространств
Другие плитка, которые могут быть Вам интересны
Представляем подборку продуктов, наиболее востребованных нашими пользователями.
Cookies Configuration
We install the technical cookies necessary for our website to function properly in your browser. On the other hand, we would like to install optional analytical cookies that allow us to know how you use our website and the sections you visit.
Cookies policy
TECHNICAL COOKIES REQUIRED
Necessary cookies activate basic functions such as page navigation and access to secure areas of the website. The website cannot function properly without these cookies.
+ Example of functionality
Example:
They allow you to apply for registration or participation in an event
Use security elements while browsing
PREFERENCE OR CUSTOMIZATION COOKIES
Preference cookies allow the website to remember information that changes the way the page behaves or the way it looks.
Allow Reject
+ Example of functionality
Example:
Your preferred language or the region in which you are located.
ANALYSIS OR MEASUREMENT COOKIES
Statistical cookies help web page owners understand how visitors interact with web pages by collecting and providing information anonymously. All this in order to improve the browsing experience.
Allow Reject
+ Example of functionality
Example:
They allow to measure, anonymously, the number of visits or activity.
ADVERTISING COOKIES
They allow the advertising we show you to be personalized and relevant to you. Thanks to these cookies you will not see ads that do not interest you.
Allow Reject
+ Example of functionality
Example:
They allow you to offer advertising according to your interests.
Cookies policy
Format-Hex (Microsoft.PowerShell.Utility) — PowerShell | Microsoft Узнайте
Редактировать
Твиттер LinkedIn Фейсбук Эл. адрес
- Артикул
- Модуль:
- Microsoft.PowerShell.Утилита
Отображает файл или другой ввод в шестнадцатеричном формате.
Синтаксис
Формат-Hex [-Путь] <Строка[]> [-Count] [-Смещение ] [<Общие параметры>]
Формат-шестнадцатеричный -LiteralPath <Строка[]> [-Count] [-Смещение ] [<Общие параметры>]
Формат-шестнадцатеричный -InputObject[-Кодировка <Кодировка>] [-Count ] [-Смещение ] [-Сырой] [ ]
Описание
Командлет Format-Hex
отображает файл или другой ввод в виде шестнадцатеричных значений. Чтобы определить
смещение символа от вывода, добавьте число в крайнем левом ряду к числу в
вверху столбца для этого символа.
9Командлет 0029 Format-Hex может помочь вам определить тип поврежденного файла или файла, который
может не иметь расширения имени файла. Вы можете запустить этот командлет, а затем прочитать шестнадцатеричный вывод
чтобы получить информацию о файле.
При использовании Format-Hex
для файла командлет игнорирует символы новой строки и возвращает весь
содержимое файла в одну строку с сохранением символов новой строки.
Примеры
Пример 1: Получить шестнадцатеричное представление строки
Эта команда возвращает шестнадцатеричные значения строки.
«Привет, мир» | Формат-шестнадцатеричный Метка: Строка (System.String) <2944BEC3> Смещение байтов Ascii 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ------ ----------------------------------------------------------- --- ----- 0000000000000000 48 65 6C 6C 6F 20 57 6F 72 6C 64 Hello World
Строка Hello World отправляется по конвейеру в Командлет Format-Hex
. Шестнадцатеричный
вывод из Format-Hex
показывает значения каждого символа в строке.
Пример 2. Поиск типа файла из шестнадцатеричного вывода
В этом примере шестнадцатеричный вывод используется для определения типа файла. Командлет отображает файл
полный путь и шестнадцатеричные значения.
Чтобы протестировать следующую команду, сделайте копию существующего файла PDF на локальном компьютере и переименуйте
скопированный файл в File.t7f
.
Format-Hex -Path .\File.t7f -Count 48 Метка: C:\Test\File.t7f Смещение байтов Ascii 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ------ ----------------------------------------------------------- --- ----- 0000000000000000 25 50 44 46 2D 31 2E 35 0D 0A 25 B5 B5 B5 B5 0D %PDF-1,5..%????. 0000000000000010 0A 31 20 30 20 6F 62 6A 0D 0A 3C 3C 2F 54 79 70 .1 0 объект..<Командлет
Format-Hex
использует параметр Path для указания имени файла в текущем каталоге,Файл.t7f
. Расширение файла.t7f
встречается редко, но шестнадцатеричный выводВ этом примере параметр Count используется для ограничения вывода первыми 48 байт файла.
Пример 3. Форматирование массива данных разных типов
В этом примере используется массив данных разных типов, чтобы показать, как
Format-Hex
обрабатывает их в Трубопровод.Каждый объект будет проходить через конвейер и обрабатываться индивидуально. Однако, если это числовое data, а соседний объект также является числовым, он сгруппирует их в единый выходной блок.
'Привет, мир!', 1, 1138, 'foo', 'bar', 0xdeadbeef, 1gb, 0b1101011100 , $true, $false | Формат-шестнадцатеричный Метка: Строка (System.String) <24F1F0A3> Смещение байтов Ascii 00 01 02 03 04 05 06 07 08 090А 0В 0С 0D 0Е 0F ------ ----------------------------------------------------------- --- ----- 0000000000000000 48 65 6C 6C 6F 20 77 6F 72 6C 64 21 Привет, мир! Метка: Int32 (System.Int32) <2EB933C5> Смещение байтов Ascii 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ------ ----------------------------------------------------------- --- ----- 0000000000000000 01 00 00 00 72 04 00 00 � р� Метка: Строка (System.String) <4078B66C> Смещение байтов Ascii 00 01 02 03 04 05 06 07 08 090А 0В 0С 0D 0Е 0F ------ ----------------------------------------------------------- --- ----- 0000000000000000 66 6F 6F фу Метка: Строка (System.String) <51E4A317> Смещение байтов Ascii 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ------ ----------------------------------------------------------- --- ----- 0000000000000000 62 61 72 бар Метка: Int32 (System.Int32) <5ADF167B> Смещение байтов Ascii 00 01 02 03 04 05 06 07 08 090А 0В 0С 0D 0Е 0F ------ ----------------------------------------------------------- --- ----- 0000000000000000 EF BE AD DE 00 00 00 40 5C 03 00 00 ï¾-Þ @\� Метка: логическое значение (System.Boolean) <7D8C4C1D> Смещение байтов Ascii 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ------ ----------------------------------------------------------- --- ----- 0000000000000000 01 00 00 00 00 00 00 00 �
Параметры
-Count
-Choding
-InputObject
-LiteralPath
-Offset
-Path
-RAW
Вход
-RAW
.
Выводы
ByteCollection
Этот командлет возвращает ByteCollection . Этот объект представляет набор байтов. Это включает в себя методы, которые преобразуют набор байтов в строку, отформатированную как каждая возвращенная строка вывода к
Формат-Hex
. В выводе также указывается тип обрабатываемых байтов. Если вы укажете Path или LiteralPath параметр, объект содержит путь к файлу, содержащему каждый байт. Если вы передаете строку, логическое значение, целое число и т. д., она будет помечена соответствующим образом.Примечания
PowerShell включает следующие псевдонимы для
Format-Hex
:
- Все платформы:
-
фхх
-
Крайний правый столбец вывода пытается отобразить байты как символы ASCII:
Как правило, каждый байт интерпретируется как кодовая точка Unicode, что означает, что:
- Печатаемые символы ASCII всегда отображаются правильно
- Многобайтовые символы UTF-8 никогда не отображаются правильно
- Символы UTF-16 отображаются правильно, только если их старший байт равен
NUL
.
- about_Quoting_Rules
- Формат-Пользовательский
- Список форматов
- Таблица форматов
- Широкий формат
Обратная связь
Отправить и просмотреть отзыв для
Этот продукт Эта страница
Просмотреть все отзывы о странице
Формат файла Intel HEX — Справка для разработчиков
Формат файла Intel HEX
Записи файла SQTP (строки текста) соответствуют формату файла Intel ® HEX. Intel HEX состоит из строк текста ASCII, разделенных символами перевода строки или возврата каретки, или и тем, и другим. Каждая текстовая строка содержит шестнадцатеричные символы, которые кодируют несколько двоичных чисел. Двоичные числа могут представлять данные, адреса памяти или другие значения в зависимости от их положения в строке, а также типа и длины строки.
Запись — это строка текста, состоящая из шести полей. Каждое поле содержит символ и несколько цифр в следующем порядке слева направо:
Поле 1. | Стартовый код – один символ Этот символ представляет собой двоеточие ASCII (:). |
Поле 2. | Счетчик байтов – две шестнадцатеричные цифры Эти две цифры указывают количество байтов (пары шестнадцатеричных цифр) в поле данных. Максимальное количество байтов составляет 255 (0xFF). Например, обычно используются счетчики 16 (0x10) и 32 (0x20) байт. |
Поле 3. | Адрес – четыре шестнадцатеричных цифры Эти четыре цифры представляют 16-битное смещение начального адреса памяти данных. Физический адрес данных вычисляется путем добавления этого смещения к ранее установленному базовому адресу. Это обеспечивает адресацию памяти за пределами 64-килобайтного предела 16-битных адресов. ![]() Базовые адреса и смещения адресов всегда выражаются в виде значений с обратным порядком байтов. |
Поле 4. | Тип записи – две шестнадцатеричные цифры от 00 до 05 Эти две цифры определяют значение поля данных. Для SQTP используются только три типа; 00, 01 и 04 (см. таблицу в «Пример файла SQTP» ). |
Поле 5. | Данные – последовательность из n байтов данных. Данные представлены 2n шестнадцатеричными цифрами. В некоторых записях это поле отсутствует (n равно нулю). Значение и интерпретация байтов данных зависят от приложения. |
Поле 6. | Контрольная сумма — две шестнадцатеричные цифры Эти две цифры представляют собой вычисленное значение, которое используется для проверки отсутствия ошибок в записи путем проверки суммы каждого байта в строке, равной нулю. ![]() |
Как указано в таблице форматов выше, последние два символа представляют собой контрольную сумму данных в строке. Поскольку контрольная сумма представляет собой двузначное шестнадцатеричное значение, она может представлять значение от 0 до 255 включительно.
Контрольная сумма вычисляется путем суммирования значения данных в строке, исключая начальное двоеточие и сам байт контрольной суммы, и берется их дополнение до двух. Например, рассмотрим строку:
:0300300002337A1E
Разбив эту строку на компоненты:
- Длина записи: 03 (3 байта данных)
- Адрес: 0030 (3 байта будут храниться по адресам 0030, 0031 и 0032)
- Тип записи: 00 (обычные данные)
- Данные: 02, 33, 7А
- Контрольная сумма: 1E
Взяв все байты данных выше, мы должны вычислить контрольную сумму на основе следующих шестнадцатеричных значений:
03 + 00 + 30 + 00 + 02 + 33 + 7A = E2
Дополнение до двух для E2 равно 1E, что равно , как видите, значение контрольной суммы.