Question

J'ai téléchargé Hex Workshop et on m'a dit de lire un fichier .dbc.

  

Il devrait contenir 28 315 si vous lisez   décalage 0x04 et 0x05

Je ne sais pas comment faire cela? Que signifie 0x04?

Était-ce utile?

La solution

0x04 est hexadécimal pour 4 (0x est simplement une convention de préfixe commune pour la représentation des nombres en base 16 - car beaucoup de gens pensent en décimal), ce qui serait le quatrième octet (puisqu'ils disent offset, ils comptent probablement le premier octet en tant qu’octet 0, l’offset 0x04 serait donc le cinquième octet).

Je suppose qu'ils disent que les 4ème et 5ème octets ensemble seraient 28315, mais ont-ils dit s'il s'agissait d'un little-endian ou d'un big-endian?

28315 (décimal) est 0x6E9B en notation hexadécimale, probablement dans le fichier dans l’ordre 0x9B 0x6E s’il s’agit d’un petit bout.

Remarque: Little-endian et big-endian font référence aux ordres octets écrits. Les humains ont l'habitude d'écrire la notation décimale et hexadécimale de manière big-endian, donc:

256 serait écrit sous la forme 0x0100 (les chiffres à gauche sont la plus grande échelle)

Mais cela prend deux octets et les systèmes little-endian écrivent d’abord l’octet inférieur: 0x00 0x01. Les systèmes big-endian écriront d'abord l'octet haut: 0x01 0x00.

En règle générale, les systèmes Intel sont de petite taille et d'autres systèmes varient.

Autres conseils

Pensez à un fichier binaire comme à un tableau linéaire d'octets.

0x04 serait le 5ème élément (dans un tableau basé sur 0) dans le tableau et 0x05 serait le 6ème.

Les deux valeurs dans 0x04 et 0x05 peuvent être combinées ensemble pour créer le nombre 28 315.

Étant donné que la valeur que vous lisez est de 16 bits, vous devez déplacer le curseur d’une valeur à l’autre, puis OU ensemble, c’est-à-dire que si vous manipuliez le fichier en c #, vous utiliseriez quelque chose comme ceci:

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

Espérons que cela aide à expliquer le fonctionnement des adresses hexadécimales.

C'est le 4ème et le 5ème code XX de votre visionnage ...

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

Donc, les 0x04 et 0x05 sont "7B" et "FF".

En supposant ce que vous dites, dans votre cas, 7BFF devrait être égal à la valeur souhaitée.

HTH

0x04 en hexadécimal est 4 en décimal. 0x10 en hexadécimal est 16 en décimal. calc.exe peut convertir pour vous entre hex et décimal.

Décalage 4 signifie 4 octets à partir du début du fichier. Le décalage 0 est le premier octet du fichier.

Regardez les octets 4 et cinq, ils devraient avoir les valeurs 0x6E 0x9B (ou 0x9B 0x6E) en fonction de votre endianess.

Commencez à ici . Une fois que vous aurez appris à lire les valeurs hexadécimales, vous serez mieux à même de résoudre votre problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top