Я загрузил Hex Workshop, и мне сказали прочитать файл .dbc.Может кто-нибудь объяснить гексагональные смещения мне?
Он должен содержать 28,315, если вы читаете смещение 0x04 и 0x05
Я не уверен, как это сделать? Что означает 0x04?
Я загрузил Hex Workshop, и мне сказали прочитать файл .dbc.Может кто-нибудь объяснить гексагональные смещения мне?
Он должен содержать 28,315, если вы читаете смещение 0x04 и 0x05
Я не уверен, как это сделать? Что означает 0x04?
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 являются малорисковыми и другие системы различаются.
Начало here. Когда вы узнаете, как читать шестнадцатеричные значения, вы будете в гораздо лучшей форме, чтобы реально решить вашу проблему.
0x04 в гексагоне 4 в десятичной форме. 0x10 в шестнадцатеричном формате - 16 в десятичной системе. calc.exe
может конвертировать между шестнадцатеричным и десятичным для вас.
Смещение 4 означает 4 байта от начала файла. Смещение 0 - это первый байт в файле.
Это четвёртая и пятая XX-код вашего просмотра ...
1 2 3 4 5 6 01 AB 11 7B FF 5A
Таким образом, 0x04 и 0x05 является "7Б" и "FF".
Предполагая, что вы говорите, в вашем случае 7BFF должен быть равен вашему желаемому значению.
НТН
Посмотрите на байты 4 и пять, они должны иметь значения 0x6E 0x9B (или 0x9B 0x6E) в зависимости от вашей порядок байтов.
Подумайте о двоичном файле как о линейном массиве байтов.
0x04 будет 5-м (в массиве на основе 0) в массиве, а 0x05 будет шестым.
Два значения в 0x04 и 0x05 могут быть OR' вместе, чтобы создать число 28,315.
Поскольку значение вы читаете 16 бит, вам нужно Bitshift одно значение более, а затем или их вместе, то есть, если вы манипулировали файл в C#, вы бы использовать что-то вроде этого:
int value = (ByteArray[4] >> 8) | ByteArray[5]);
Надеюсь, это поможет объяснить, как работают шестнадцатеричные адреса.
Почему этот вопрос отмечен? Это совершенно правильный вопрос. – 2008-09-26 19:02:37
Посмотрите, какие ответы на более качественные ответы вы получите с правильным вопросом? – GEOCHET 2008-09-26 19:02:59