2008-09-26 28 views
17

He descargado Hex Workshop, y me dijeron que leyera un archivo .dbc.¿Alguien me puede explicar las compensaciones hexadecimales?

Debe contener 28.315 si se lee desplazamiento 0x04 y 0x05

estoy seguro de cómo hacer esto? ¿Qué significa 0x04?

+5

¿Por qué esta pregunta está marcada? Es una pregunta perfectamente válida. –

+0

¿Cuántas respuestas de mejor calidad obtienes con una pregunta adecuada? – GEOCHET

Respuesta

9

0x04 es hexadecimal para 4 (el 0x es solo una convención de prefijo común para la base 16 representación de números, ya que muchas personas piensan en decimal), y ese sería el cuarto byte (ya que dicen offset, probablemente cuenten el primer byte como byte 0, por lo que el offset 0x04 sería el quinto byte).

Supongo que están diciendo que el byte 4to y 5to juntos serían 28315, pero ¿dijeron si esto es little-endian o big-endian?

28315 (decimal) es 0x6E9B en notación hexadecimal, probablemente en el archivo en orden 0x9B 0x6E si es little-endian.

Nota: Little-endian y big-endian hacen referencia a los bytes de la orden que se escriben. Los seres humanos típica notación decimal de escritura y hexadecimal de una manera big-endian, por lo que:

256 se escribiría 0x0100 (dígitos de la izquierda son el mayor escala)

pero eso lleva dos bytes y sistemas little-endian escribirá el byte bajo primero: 0x00 0x01. Los sistemas de Big-endian escribirán primero el byte alto: 0x01 0x00.

Normalmente, los sistemas Intel son little-endian y otros sistemas varían.

+0

@OregonGhost: Espero que no te importe, sentí que tu adición merecía ser parte de esa respuesta. – GEOCHET

1

Inicio here. Una vez que aprenda a leer valores hexadecimales, estará en una mejor forma para resolver su problema.

1

0x04 en hex es 4 en decimal. 0x10 en hex es 16 en decimal. calc.exe puede convertir entre hexadecimal y decimal para usted.

Offset 4 significa 4 bytes desde el inicio del archivo. Offset 0 es el primer byte en el archivo.

2

Es la cuarta y la quinta el código XX su visión ...

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

Así, el 0x04 y 0x05 es "7B" y "FF".

Suponiendo lo que está diciendo, en su caso 7BFF debe ser igual al valor deseado.

HTH

1

mirada en los bytes 4 y cinco que deberían tener los valores 0x6E 0x9B (o 0x6E 0x9B) en función de su endianess.

2

Piense en un archivo binario como una matriz lineal de bytes.

0x04 sería el 5to elemento (en una disposición basada en 0) en la matriz, y 0x05 sería la 6ma.

Los dos valores en 0x04 y 0x05 se pueden ordenar juntos para crear el número 28,315.

Dado que el valor que está leyendo es de 16 bits, es necesario BitShift un valor de más y luego O juntos, es decir, si estuviera manipulando el archivo en C#, se usaría algo como esto:

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

Esperemos que esto ayude a explicar cómo funcionan las direcciones hexadecimales.

Cuestiones relacionadas