2008-09-26 6 views
17

Я загрузил Hex Workshop, и мне сказали прочитать файл .dbc.Может кто-нибудь объяснить гексагональные смещения мне?

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

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

+5

Почему этот вопрос отмечен? Это совершенно правильный вопрос. – 2008-09-26 19:02:37

+0

Посмотрите, какие ответы на более качественные ответы вы получите с правильным вопросом? – GEOCHET 2008-09-26 19:02:59

ответ

9

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

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

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

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

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

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

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

1

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

1

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

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

2

Это четвёртая и пятая XX-код вашего просмотра ...

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

Таким образом, 0x04 и 0x05 является "7Б" и "FF".

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

НТН

1

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

2

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

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

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

Поскольку значение вы читаете 16 бит, вам нужно Bitshift одно значение более, а затем или их вместе, то есть, если вы манипулировали файл в C#, вы бы использовать что-то вроде этого:

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^