Domanda

Ho scaricato Hex Workshop e mi è stato detto di leggere un file .dbc.

  

Dovrebbe contenere 28.315 se leggi   offset 0x04 e 0x05

Non sono sicuro di come farlo? Che cosa significa 0x04?

È stato utile?

Soluzione

0x04 è esadecimale per 4 (lo 0x è solo una convenzione prefisso comune per la rappresentazione dei numeri in base 16 - poiché molte persone pensano in decimale), e quello sarebbe il quarto byte (poiché stanno dicendo offset, probabilmente contano il primo byte come byte 0, quindi offset 0x04 sarebbe il 5 ° byte).

Immagino stiano dicendo che il quarto e il quinto byte insieme sarebbero 28315, ma hanno detto se questo è little-endian o big-endian?

28315 (decimale) è 0x6E9B in notazione esadecimale, probabilmente nel file in ordine 0x9B 0x6E se è little-endian.

Nota: Little-endian e big-endian si riferiscono ai byte dell'ordine scritti. Gli umani tipicamente scrivono notazione decimale ed esadecimale in modo bigendiano, quindi:

256 verrebbero scritti come 0x0100 (le cifre a sinistra sono la scala più grande)

Ma questo richiede due byte e i sistemi little-endian scriveranno prima il byte basso: 0x00 0x01. I sistemi big-endian scriveranno prima il byte alto: 0x01 0x00.

In genere i sistemi Intel sono little-endian e altri sistemi variano.

Altri suggerimenti

Pensa a un file binario come una matrice lineare di byte.

0x04 sarebbe il quinto elemento (in un array basato su 0) nell'array e 0x05 sarebbe il sesto.

I due valori in 0x04 e 0x05 possono essere OR insieme per creare il numero 28.315.

Dato che il valore che stai leggendo è 16 bit, devi spostare un valore sopra e poi OR insieme, cioè se stessi manipolando il file in c #, useresti qualcosa del genere:

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

Speriamo che questo aiuti a spiegare come funzionano gli indirizzi esadecimali.

È il 4o e il 5o XX codice che stai visualizzando ...

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

Quindi, 0x04 e 0x05 è "7B" e " FF " ;.

Supponendo che cosa stai dicendo, nel tuo caso 7BFF dovrebbe essere uguale al valore desiderato.

HTH

0x04 in esadecimale è 4 in decimale. 0x10 in esadecimale è 16 in decimale. calc.exe può convertire tra esadecimale e decimale per te.

Offset 4 significa 4 byte dall'inizio del file. L'offset 0 è il primo byte nel file.

Guarda i byte 4 e cinque dovrebbero avere i valori 0x6E 0x9B (o 0x9B 0x6E) a seconda della tua endianess.

Inizia qui . Dopo aver appreso come leggere i valori esadecimali, sarai in una forma molto migliore per risolvere effettivamente il tuo problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top