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')

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'

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))

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.


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


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.