Réponses:
Comme mentionné précédemment, la formule = DEC2HEX (A1) est convertie en hexadécimal et DEC2HEX (A1,8) est convertie en hexadécimal avec le préfixe 0 pour indiquer 32 bits. Bien que l'ajout des premiers 0 rend les nombres plus lisibles, surtout si vous utilisez une police à virgule fixe, les versions hexadécimale et décimale peuvent se mélanger lorsque tous les chiffres du nombre se trouvent être 0-9 (par exemple 327701 = 50015).
Une amélioration consiste à ajouter le préfixe "0x". Il y a 2 façons de procéder. = "0x" & DEC2HEX (A1,8) fera l'affaire, mais il change le champ en champ de texte, il ne peut donc plus être facilement utilisé dans les formules. Une autre méthode consiste à utiliser un format personnalisé. Si vous appliquez le format personnalisé "0x" @ à la cellule, la valeur de la cellule peut toujours être utilisée dans une équation. Exemples:
╔═══╦════════════════╦════════════╦═══════════════ ══════════════╦═══════════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬════════════════╬════════════╬═══════════════ ══════════════╬═══════════════╣ ║ 1 ║ ║ Valeur ║ Formule correspondante ║ Format des nombres ║ ║ 2 ║ Décimal ║ 11162790 ║ 11162790 ║ Général ║ ║ 3 ║ Hex ║ AA54A6 ║ = DEC2HEX (B2) ║ Général ║ ║ 4 ║ 0 en tête ║ 00AA54A6 ║ = DEC2HEX (B2,8) ║ Général ║ ║ 5 ║ Préfixe de texte 0x ║ 0x00AA54A6 ║ = DEC2HEX (B2,8) ║ "0x" @ ║ ║ 6 ║ Préfixe Texte 0x ║ 0x00AA54A6 ║ = "0x" & DEC2HEX (B2,8) ║ Général ║ ║ 7 ║ Utilisez B5 ║ AA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ Général ║ ║ 8 ║ Utilisez B5 ║ 0xAA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ "0x" @ ║ ║ 9 ║ Essayez d'utiliser B6 ║ #NUM! ║ = DEC2HEX (HEX2DEC (B6) * 256) ║ Général ║ ╚═══╩════════════════╩════════════╩═══════════════ ══════════════╩═══════════════╝
╔═══╦═════════════╦═══════════════╦═══════════════ ═════════════════════╦═════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬═════════════╬═══════════════╬═══════════════ ═════════════════════╬═════════╣ ║ 1 ║ ║ Valeur ║ Formule correspondante ║ Format ║ ║ 2 ║ Décimal ║ 3098743209 ║ 3098743209 ║ #, ## 0 ║ ║ 3 ║ Octets supérieurs ║ B8B3 ║ = DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ Général ║ ║ 4 ║ Octets inférieurs ║ 11A9 ║ = DEC2HEX (MOD (B2, 2 ^ 16)) ║ Général ║ ║ 5 ║ Numéro complet ║ 0xB8B3_11A9 ║ = "0x" & DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ Général ║ ║ ║ ║ ║ & "_" & DEC2HEX (MOD (B2, 2 ^ 16), 4) ║ ║ ╚═══╩═════════════╩═══════════════╩═══════════════ ═════════════════════╩═════════╝
Si vous souhaitez formater une cellule pour pouvoir saisir un nombre décimal et l'afficher automatiquement sous forme de nombre hexadécimal, ce n'est pas possible. Vous pouvez soit formater la cellule sous forme de texte et saisir directement des nombres hexadécimaux (mais notez qu'Excel ne peut pas les utiliser pour les calculs), soit utiliser les fonctions DEC2HEX()
et HEX2DEC()
pour convertir entre la base 10 et la base 16.
Si vous devez effectuer des opérations mathématiques sur des nombres convertis en hexadécimal, convertissez-les d'abord en décimal, effectuez l'opération, puis reconvertissez en hexadécimal.
Par exemple, si la cellule A1
a un nombre hexadécimal, tel que celui qui serait créé à partir de cette formule:
=DEC2HEX(17)
qui serait affiché comme 11, et la cellule A2
a la formule:
=DEC2HEX(165)
qui serait affiché comme A5
, et vous voulez les ajouter ensemble, alors cette formule obtiendrait le résultat souhaité:
=DEC2HEX(HEX2DEC(A1)+HEX2DEC(A2))
qui serait affiché comme B6
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)
La formule REPT répète le «0» en fonction de la longueur de la chaîne hexadécimale générée en la convertissant à partir d'une décimale et de la longueur souhaitée de la chaîne HEX. Dans cet exemple, je cherche à générer des chaînes HEX de longueur 4.
Vous concaténez ensuite les zéros de tête à la chaîne HEX réelle, générant ainsi la valeur HEX de la longueur souhaitée.
Avantages:
Remarque: je l'utilise lorsque je copie des chaînes HEX et qu'elles sont copiées à différentes longueurs. Je génère d'abord une colonne de valeurs décimales à partir des valeurs d'origine sur lesquelles je peux ensuite exécuter cette formule.
Voici une solution que j'ai trouvée pour m'assurer que je peux formater ces nombres hexadécimaux au format HTML:
SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))
DEC2BIN()
qui se convertit en binaire. Pour les binaires à largeur fixe, utilisez quelque chose comme=TEXT(DEC2BIN(A1), "0000")