Disons que j'ai 2 valeurs hexadécimales qui ont été prises à partir de la saisie au clavier.

Par exemple. val1 = 0x000000 et val2 = 0xFF0000

Et je fais,

print(hex(val1)) 
print(hex(val2))

J'obtiens la bonne sortie pour val2 mais val1 est juste 0x0, comment puis-je l'obtenir pour imprimer la valeur entière?

Par valeur entière, je veux dire, si la valeur entrée est 0x000000, je veux sortir la valeur comme 0x000000 et non 0x0.

-1
Ken Doe 14 avril 2018 à 07:46

2 réponses

Meilleure réponse

Vous pouvez ajouter la valeur hexadécimale au nombre de chiffres spécifié en utilisant la méthode ljust.

Chaque fois que la chaîne est inférieure à la largeur spécifiée, elle ajoutera le caractère de remplissage spécifié pour l'étendre.

Dans votre exemple d'exemple, hex(0x0).ljust(8, '0') == "0x000000". Les chaînes déjà suffisamment longues sont conservées pour que 0xFF0000 fonctionne toujours.

print(hex(0x000000).ljust(8, '0')) # Prints 0x000000
print(hex(0xFF0000).ljust(8, '0')) # Prints 0xFF0000

Quelques points importants à noter qui m'ont mordu dans le passé:

  1. Assurez-vous que votre largeur inclut la longueur du "0x" de tête
    • En effet, l'opérateur de fonction ljust fonctionne sur du texte brut et ne se rend pas compte qu'il s'agit d'une chaîne hexadécimale
  2. Si vous donnez une valeur de largeur plus courte que celle dont vous avez besoin, les chaînes ne seront pas suffisamment remplies et auront des longueurs différentes.
    • En d'autres termes len(hex(0xFF0000).ljust(4, '0')) != len(hex(0xFF0000).ljust(4, '0')) parce que vous avez besoin d'une longueur de 8 caractères pour s'adapter aux deux cas
1
Techcable 14 avril 2018 à 05:03

Vous dites que l'utilisateur a tapé cette entrée sur le clavier. Cela signifie que vous avez déjà commencé avec les chaînes que vous voulez, mais vous avez analysé les entiers de l'entrée et jeté les chaînes.

Ne fais pas ça. Gardez les cordes. Analysez également les entiers si vous avez besoin de faire des calculs, mais conservez les chaînes. Ensuite, vous pouvez simplement faire

print(original_input)

Sans avoir à passer par un processus de reconstruction et à deviner combien de zéros de tête ont été initialement entrés.

1
user2357112 supports Monica 14 avril 2018 à 05:01