24 Stimmen

Kann mir jemand die Hex-Offsets erklären?

Ich habe Hex Workshop heruntergeladen, und mir wurde gesagt, ich solle eine .dbc-Datei lesen.

Sie sollte 28.315 enthalten, wenn Sie lesen Offset 0x04 und 0x05

Ich weiß nicht, wie ich das machen soll? Was bedeutet 0x04?

14voto

Cade Roux Punkte 85601

0x04 ist hexadezimal für 4 (das 0x ist nur eine gängige Präfix-Konvention für die Basis-16-Darstellung von Zahlen - da viele Menschen in Dezimalzahlen denken), und das wäre das vierte Byte (da sie Offset sagen, zählen sie wahrscheinlich das erste Byte als Byte 0, also wäre Offset 0x04 das 5te Byte).

Ich vermute, sie sagen, dass das 4. und 5. Byte zusammen 28315 wären, aber haben sie gesagt, ob dies Little-Endian oder Big-Endian ist?

28315 (dezimal) ist 0x6E9B in hexadezimaler Schreibweise, wahrscheinlich in der Datei in der Reihenfolge 0x9B 0x6E, wenn sie Little-Endian ist.

Hinweis: Little-Endian und Big-Endian beziehen sich auf die Reihenfolge, in der die Bytes geschrieben werden. Menschen schreiben typischerweise dezimal und hexadezimal in Big-Endian-Schreibweise, also:

256 würde als 0x0100 geschrieben werden (die Ziffern auf der linken Seite sind die größte Skala)

Dazu werden jedoch zwei Bytes benötigt, und Little-Endian-Systeme schreiben das Low-Byte zuerst: 0x00 0x01. Big-Endian-Systeme schreiben das High-Byte zuerst: 0x01 0x00.

Typischerweise sind Intel-Systeme Little-Endian und andere Systeme variieren.

3voto

FlySwat Punkte 165766

Stellen Sie sich eine Binärdatei als eine lineare Anordnung von Bytes vor.

0x04 wäre das 5. (in einem 0-basierten Array) Element im Array, und 0x05 wäre das 6.

Die beiden Werte in 0x04 und 0x05 können mit ODER verknüpft werden, um die Zahl 28.315 zu erhalten.

Da der Wert, den Sie lesen, 16 Bit ist, müssen Sie einen Wert über bitshift und dann ODER sie zusammen, dh wenn Sie die Datei in c# manipulieren wurden, würden Sie etwas wie dieses verwenden:

int value = (ByteArray[4] >> 8) | ByteArray[5]);

Ich hoffe, dies erklärt, wie Hex-Adressen funktionieren.

2voto

vIceBerg Punkte 4027

Es ist der 4. und 5. XX Code, den Sie sehen...

1   2  3  4  5  6
01  AB 11 7B FF 5A

Die 0x04 und 0x05 sind also "7B" und "FF".

Wenn man davon ausgeht, was Sie sagen, sollte in Ihrem Fall 7BFF gleich dem gewünschten Wert sein.

HTH

1voto

John Millikin Punkte 190278

0x04 in hex ist 4 in dezimal. 0x10 in hex ist 16 in dezimal. calc.exe kann für Sie zwischen Hex und Dezimal umrechnen.

Offset 4 bedeutet 4 Bytes vom Anfang der Datei. Offset 0 ist das erste Byte in der Datei.

1voto

Torbjörn Gyllebring Punkte 17358

Schauen Sie sich die Bytes 4 und 5 an, sie sollten die Werte 0x6E 0x9B (oder 0x9B 0x6E) haben, abhängig von Ihrer Endianess.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X