Подтвердить что ты не робот

Может кто-нибудь объяснить гексагональные смещения мне?

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

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

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

4b9b3361

Ответ 1

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

Я предполагаю, что они говорят, что 4-й и 5-й байты вместе будут 28315, но говорили ли они, если это мало-северное или big-endian?

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

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

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

Но это берет два байта, а мало-конечные системы сначала записывают младший байт: 0x00 0x01. Системы Big-Endian сначала напишут старшие байты: 0x01 0x00.

Как правило, системы Intel малоизучны, а другие системы различаются.

Ответ 2

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

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

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

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

НТН

Ответ 3

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

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

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

Поскольку значение, которое вы читаете, составляет 16 бит, вам нужно бить по одному значению, а затем OR вместе, т.е. если вы манипулировали файлом в С#, вы должны использовать что-то вроде этого:

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

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

Ответ 4

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

Ответ 5

0x04 в шестнадцатеричном виде равен 4 в десятичном значении. 0x10 в шестнадцатеричном формате - 16 в десятичной системе. calc.exe может конвертировать между шестнадцатеричным и десятичным для вас.

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

Ответ 6

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