131 votes

Comment utiliser hex() sans 0x en Python ?

El hex() en python, met les caractères de tête 0x devant le numéro. Y a-t-il un moyen de lui dire de ne pas les mettre ? Donc 0xfa230 sera fa230 .

Le code est le suivant

import fileinput
f = open('hexa', 'w')
for line in fileinput.input(['pattern0.txt']):
   f.write(hex(int(line)))
   f.write('\n')

238voto

jamylak Points 38094

(Recommandé)

Chaînes f de Python 3 : Réponse de @GringoSuave

>>> i = 3735928559
>>> f'{i:x}'
'deadbeef'

Alternatives :

format fonction intégrée (valable pour les valeurs uniques uniquement)

>>> format(3735928559, 'x')
'deadbeef'

Et parfois, nous pouvons encore avoir besoin d'utiliser str.format mise en forme dans certaines situations @Eumiro

(Bien que je recommande toujours f-strings dans la plupart des situations)

>>> '{:x}'.format(3735928559)
'deadbeef'

(Legacy) f-strings devrait résoudre tous vos besoins, mais printf -formatage du style c'est ce que nous avions l'habitude de faire @msvalkon

>>> '%x' % 3735928559
'deadbeef'

Hacky Answers (éviter)

hex(i)[2:] @GuillaumeLemaître

>>> i = 3735928559
>>> hex(i)[2:]
'deadbeef'

Cette méthode repose sur le découpage de la chaîne de caractères au lieu d'utiliser une fonction ou une méthode conçue spécifiquement pour le formatage. hex . C'est pourquoi il peut donner des résultats inattendus pour les nombres négatifs :

>>> i = -3735928559
>>> hex(i)[2:]
'xdeadbeef'
>>> f'{i:x}'
'-deadbeef'

67voto

eumiro Points 56644

Utilisez ce code :

'{:x}'.format(int(line))

il vous permet également de spécifier un nombre de chiffres :

'{:06x}'.format(123)
# '00007b'

Pour Python 2.6, utilisez

'{0:x}'.format(int(line))

ou

'{0:06x}'.format(int(line))

26voto

Vous pouvez simplement écrire

hex(x)[2:]

pour que les deux premiers caractères soient supprimés.

20voto

Gringo Suave Points 5985

Python 3.6+ :

>>> i = 240
>>> f'{i:x}'
'f0'

8voto

msvalkon Points 5338

Ancien style de formatage des chaînes de caractères :

In [3]: "%x" % 127
Out[3]: '7f'

Nouveau style

In [7]: '{:x}'.format(127)
Out[7]: '7f'

En utilisant des lettres majuscules comme caractères de format, on obtient des caractères hexadécimaux en majuscules.

In [8]: '{:X}'.format(127)
Out[8]: '7F'

Docs sont ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X