Comment utiliser hex () sans 0x en Python?

93

La hex()fonction en python, met les premiers caractères 0xdevant le nombre. Est-il possible de lui dire de ne PAS les mettre? Il en 0xfa230sera de même fa230.

Le code est

import fileinput
f = open('hexa', 'w')
for line in fileinput.input(['pattern0.txt']):
   f.write(hex(int(line)))
   f.write('\n')
Mahmood
la source
2
Vous pouvez découper le fichier 0x.
Ashwini Chaudhary
3
@AshwiniChaudhary Je pense qu'il demande essentiellement comment trancher le 0x
Mine

Réponses:

187
>>> format(3735928559, 'x')
'deadbeef'
Jamylak
la source
34
Je dois aimer le dernier deadbeefexemple. Et format()c'est la meilleure façon de le faire.
Martijn Pieters
58

Utilisez ce code:

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

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

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

Pour Python 2.6, utilisez

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

ou

'{0:06x}'.format(int(line))
eumiro
la source
8
L'utilisation de la format()fonction est plus facile, vous n'utilisez aucune fonctionnalité de création de modèles, uniquement le formatage. Si tout votre modèle contient {:..}une seule valeur, passez à la format(value, '..')place.
Martijn Pieters
Utilisation f.write('{:x}'.format(hex(int(line)))), il ditValueError: zero length field name in format
mahmood
formata besoin d'un int, pas d'une chaîne:f.write('{:x}'.format(int(line)))
eumiro
17

Vous pouvez simplement écrire

hex(x)[2:]

pour supprimer les deux premiers caractères.

Guillaume Lemaître
la source
3
Ceci n'est pas sûr contre les modifications futures de la sortie.
Stefano Sanfilippo
2
Également en Python 2 avec des nombres longs, il produit une sortie étrange:>>> hex(3735928559)[2:] 'deadbeefL'
jamylak
@esseks: Je doute qu'ils changeront le format de sortie avant la prochaine version majeure. Vous aurez quand même d'autres incompatibilités.
Janus Troelsen
9
Cela cassera si xest négatif.
DSM
14

Python 3.6+:

>>> i = 240
>>> f'{i:02x}'
'f0'
Gringo Suave
la source
7

Formatage de chaîne de style ancien:

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

Nouveau style

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

L'utilisation de majuscules comme caractères de format donne de l'hexadécimal majuscule

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

Les documents sont ici.

msvalkon
la source