source portable open online hexadecimal hex hex-editors

portable - hex editor open source



¿Alguien puede explicarme las compensaciones hexagonales? (6)

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

Debe contener 28,315 si lee offset 0x04 y 0x05

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


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.


0x04 es hexadecimal para 4 (el 0x es solo una convención de prefijo común para la base 16 de representación de números, ya que muchas personas piensan en decimal), y ese sería el cuarto byte (dado que dicen offset, probablemente cuenten el primer byte como byte 0, por lo que el desplazamiento 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 se refieren a los bytes de la orden que se escriben. Los humanos escriben notación decimal y hexadecimal en una forma de big-endian, entonces:

256 se escribiría como 0x0100 (los dígitos de 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 de Big-endian escribirán primero el byte alto: 0x01 0x00.

Por lo general, los sistemas Intel son little-endian y otros sistemas varían.


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


Es el 4º y el 5º XX codifican tu visualización ...

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

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

Asumiendo lo que dices, en tu caso 7BFF debería ser igual a tu valor deseado.

HTH


Observe los bytes 4 y 5 que deberían tener los valores 0x6E 0x9B (o 0x9B 0x6E) dependiendo de su endianess.


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 la sexta.

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, necesita desplazar un valor de bits y luego O juntos, es decir, si estaba manipulando el archivo en c #, usaría algo como esto:

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

Con suerte, esto ayuda a explicar cómo funcionan las direcciones hexadecimales.