Pregunta

Descargué Hex Workshop y me dijeron que leyera un archivo .dbc.

  

Debería contener 28,315 si lees   offset 0x04 y 0x05

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

¿Fue útil?

Solución

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

Supongo que están diciendo que el cuarto y el quinto byte 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 el orden 0x9B 0x6E si es little-endian.

Nota: Little-endian y big-endian se refieren al orden en que se escriben los bytes. Los seres humanos suelen escribir la notación decimal y el hexadecimal de forma big-endian, por lo que:

256 se escribiría como 0x0100 (los dígitos a la izquierda son la escala más grande)

Pero eso toma dos bytes y los sistemas little-endian escribirán primero el byte bajo: 0x00 0x01. Los sistemas Big-endian escribirán primero el byte alto: 0x01 0x00.

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

Otros consejos

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

0x04 sería el quinto elemento (en una matriz basada en 0) en la matriz, y 0x05 sería el sexto.

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

Dado que el valor que está leyendo es de 16 bits, necesita cambiar un valor por bits y luego OERlos juntos, es decir, si estuviera manipulando el archivo en c #, usaría algo como esto:

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

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

Es el 4to y el 5to código XX que estás viendo ...

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

Entonces, el 0x04 y 0x05 es " 7B " y " FF " ;.

Suponiendo que está diciendo, en su caso, 7BFF debería ser igual al valor deseado.

HTH

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

La compensación 4 significa 4 bytes desde el inicio del archivo. Offset 0 es el primer byte en el archivo.

Fíjate en los bytes 4 y cinco que deberían tener los valores 0x6E 0x9B (o 0x9B 0x6E) dependiendo de tu endianess.

Inicie aquí . Una vez que aprendas a leer valores hexadecimales, estarás en mejor forma para resolver realmente tu problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top