Qualcuno può spiegarmi offset esadecimali?
-
02-07-2019 - |
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?
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.