Может кто-нибудь объяснить мне смещения hex?

Я загрузил Hex Workshop ,и мне сказали прочитать.dbc файл.

Он должен содержать 28,315 если Вы читаете смещение 0х04 и 0x05

Я не уверен, как это сделать? Что означает 0x04?

6 ответов


0x04 является шестнадцатеричным для 4 (0x - это просто общее префиксное Соглашение для базового представления чисел 16-так как многие люди думают в десятичном формате), и это будет четвертый байт (поскольку они говорят offset, они, вероятно, считают первый байт как байт 0, поэтому offset 0x04 будет 5-м байтом).

Я думаю, они говорят, что 4-й и 5-й байты вместе будут 28315, но они сказали, если это маленький или большой конец?

28315 (десятичный) - 0x6E9B в шестнадцатеричная нотация, вероятно, в файле в порядке 0x9B 0x6E, если это мало-endian.

Примечание: Little-endian и big-endian ссылаются на байты заказа написаны. Люди обычно пишут десятичную нотацию и шестнадцатеричную по-крупному, так что:

256 будет записано как 0x0100 (цифры слева-самый большой масштаб)

но это занимает два байта и мало-endian системах сначала младший байт: 0х00 0х01. Big-endian systems напишет высокая байт: 0х00 0х01.

обычно системы Intel мало-endian и других систем различаются.


это 4-й и 5-й XX код вашего просмотра...

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

Итак, 0x04 и 0x05 - это "7B"и " FF".

предполагая, что вы говорите, в вашем случае 7BFF должно быть равно вашему желаемому значению.

HTH


подумайте о двоичном файле как о линейном массиве байтов.

0x04 будет 5-м (в массиве на основе 0) элементом в массиве, а 0x05 будет 6-м.

два значения в 0x04 и 0x05 могут быть объединены вместе, чтобы создать число 28,315.

Так как значение, которое Вы читаете, составляет 16 бит, вам нужно bitshift одно значение, а затем или их вместе, т. е. если бы вы манипулировали файлом в C#, вы бы использовали что-то вроде это:

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

надеюсь, это поможет объяснить, как работают шестнадцатеричные адреса.


0х04 в Хекс-4 в десятичной. 0x10 в hex это 16 в десятичной. calc.exe может конвертировать между шестнадцатеричным и десятичным для вас.

Offset 4 означает 4 байта от начала файла. Смещение 0 является первым байтом в файле.


посмотрите на байты 4 и пять, они должны иметь значения 0x6E 0x9B (или 0x9B 0x6E) в зависимости от вашей endianess.


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