Was ist das HEX-Dateiformat?
Dateien mit der .hex-Erweiterung verwenden das Intel-HEX-Format - ein reines ASCII-Textformat, das kompilierte Binär-Firmware kodiert, damit sie zuverlässig an ein Programmiergerät oder Flash-Tool übertragen werden kann. Anstatt rohe Binärdaten zu speichern, wird jedes Byte als zwei hexadezimale Zeichen dargestellt, sodass die Datei in jedem Texteditor vollständig lesbar bleibt.
.hex-Dateien sind stets reiner Text und können mit einem Standard-Texteditor wie Notepad geöffnet werden. Um die Firmware auf einen Mikrocontroller zu übertragen, werden spezielle Tools wie avrdude oder die Arduino IDE verwendet. Falls roher Maschinencode benötigt wird, kann ein Compiler auch ein binäres .bin-Image oder eine Motorola-S-Record-.srec-Datei für Systeme ausgeben, die dieses Format bevorzugen.
Eine .hex-Datei entsteht, wenn ein Compiler oder Assembler Quellcode in Maschinencode umwandelt und diesen anschließend für die sichere Übertragung auf das Zielgerät kodiert.
Einsatzgebiete von .hex-Dateien
Die Daten in .hex-Dateien werden zum Programmieren von Mikrocontrollern und zum Beschreiben eingebetteter Speicher wie EEPROM und Flash verwendet. Mikrocontroller sind in vielen alltäglichen Geräten verbaut - von Fernbedienungen und Motorsteuerungen in Fahrzeugen bis hin zu modernen IoT-Sensoren und Robotik-Hardware.
Aufbau der Daten in .hex-Dateien
Hexadezimale Daten werden in einer .hex-Datei in Textzeilen gespeichert, die als Records bezeichnet werden. Jeder Record besteht aus sechs Feldern:
- Startcode - ein Doppelpunkt (
:), der den Beginn jedes Records markiert - Byte-Anzahl - zwei Hex-Ziffern, die die Anzahl der Datenbytes in diesem Record definieren
- Adresse - vier Hex-Ziffern, die die 16-Bit-Zieladresse angeben (im Basisformat bis zu 64 KB pro Segment)
- Record-Typ - zwei Hex-Ziffern von
00bis05(z. B.00= Datenrecord,01= Dateiende) - Daten - die eigentliche Nutzlast, wobei jedes Byte als zwei hexadezimale Zeichen kodiert ist
- Prüfsumme - zwei Hex-Ziffern mit dem Zweierkomplement-Prüfsummenwert aller vorangehenden Bytes im Record
Die letzte Zeile jeder gültigen Intel-HEX-Datei ist der fest definierte End-of-File-Record :00000001FF.
Sicherheit
RISIKO: MEDIUMEine .hex-Datei enthält nur Daten und kann auf dem PC nicht eigenständig ausgeführt werden - das Öffnen in einem Text- oder Hex-Editor ist daher ungefährlich. Das eigentliche Risiko besteht auf dem Zielgerät: Das Flashen nicht vertrauenswürdiger Firmware kann Hardware beschädigen oder Schadcode auf einen Mikrocontroller laden. Übertragen Sie .hex-Dateien nur vom Gerätehersteller oder einer vertrauenswürdigen Quelle, und vergewissern Sie sich, dass die Datei genau zu Ihrem Board/Chip passt, bevor Sie den Upload starten. Auch das manuelle Bearbeiten von Firmware-Bytes kann das Image beschädigen.
Formatdetails
kurz gefasst- Generischer Hex-Dump - Eine lesbare Darstellung der rohen Bytes einer anderen Datei (Offset + Hex + ASCII-Spalten), die von einem Hex-Editor oder Tools wie xxd/hexdump erzeugt wird; manchmal werden auch rohe Binär-Blobs lose als .hex gespeichert.
Programme zum Öffnen von HEX-Dateien
Technische Details
technische Spezifikation| Kodierung | Reiner ASCII-Text; jedes Datenbyte wird als zwei hexadezimale Zeichen dargestellt |
| Record-Startzeichen | Doppelpunkt `:` (0x3A) - jede Record-Zeile beginnt mit diesem Zeichen; es gibt keine binäre Magic-Number |
| Record-Typen | Sechs Typen, nummeriert 00-05: Daten (00), Dateiende (01), erweiterte Segmentadresse (02), Startsegmentadresse (03), erweiterte lineare Adresse (04), lineare Startadresse (05) |
| Basisadressbereich | 16-Bit-Adressierung pro Segment, bis zu 64 KB ohne Adresserweiterungsrecords |
| Erweiterter Adressbereich | Bis zu 4 GB (32-Bit) mit Record-Typ 04 (Extended Linear Address), ermöglicht vollständiges 32-Bit-Speicher-Mapping |
| Max. Datenbytes pro Record | Bis zu 255 Bytes (0xFF) Daten pro Record; üblich sind 16 oder 32 Bytes |
| Prüfsummenalgorithmus | 8-Bit-Zweierkomplement aller Bytes im Record (Byte-Anzahl, Adresse, Record-Typ und Daten), ohne das Startzeichen |
| Dateiende-Markierung | Der feste Record `:00000001FF` muss jede gültige Intel-HEX-Datei abschließen |
| MIME-Typ | text/plain |
| Byte-Reihenfolge der Adresse | Big-Endian - höchstwertiges Byte zuerst in Adress- und Mehrbytefeldern |
| Hauptverwendung | Programmieren von Flash und EEPROM auf Mikrocontrollern der Familien AVR, PIC, ARM Cortex-M und 8051 |
| Werkzeugketten-Herkunft | Ausgabe von Compilern und Assemblern wie avr-gcc, MPLAB X IDE, Keil MDK und IAR Embedded Workbench |
| Dateigrößen-Overhead | Ca. 1,4-2× die rohe Binärgröße, da jedes Datenbyte zu zwei ASCII-Zeichen plus Record-Rahmen-Bytes wird |
| Veröffentlicht | 1973 (Intel HEX format) |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | en.wikipedia.org |
HEX-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu HEX-Dateien.