2013-02-20 2 views

Antwort

19

Sie können dies tun, indem ein spezielles Display Formatter für ints Registrierung:

In [1]: formatter = get_ipython().display_formatter.formatters['text/plain'] 

In [2]: formatter.for_type(int, lambda n, p, cycle: p.text("%X" % n)) 
Out[2]: <function IPython.lib.pretty._repr_pprint> 

In [3]: 1 
Out[3]: 1 

In [4]: 100 
Out[4]: 64 

In [5]: 255 
Out[5]: FF 

Wenn Sie wollen, dass diese always-on, eine Datei in $(ipython locate profile)/startup/hexints.py mit den ersten beiden Zeilen erstellen (oder wie man zu vermeiden Zuweisungen):

get_ipython().display_formatter.formatters['text/plain'].for_type(int, lambda n, p, cycle: p.text("%X" % n)) 

, die bei jedem Start von IPython ausgeführt werden.

+0

Perfekt. Genau das, was ich gesucht habe. Danke vielmals! – geschema

+2

Noch besser: beide Darstellungen drucken! 'formatter.for_type (int, lambda n, p, zyklus: p.text ("% d (0x% X) "% (n, n))' –

+0

Dieser Vorschlag ist genial, spart mir kumulative Stunden der Eingabe ' hex (...) ', um Ergebnisse im Hex-Format zu erhalten. – wump

1

Basierend auf minrk's answer und rjb's answer auf eine andere Frage, ich habe dies in meiner Python-Startup-Datei:

def hexon_ipython(): 
    '''To print ints as hex, run hexon_ipython(). 
    To revert, run hexoff_ipython(). 
    ''' 
    formatter = get_ipython().display_formatter.formatters['text/plain'] 
    formatter.for_type(int, lambda n, p, cycle: p.text("0x%x" % n)) 


def hexoff_ipython(): 
    '''See documentation for hexon_ipython().''' 
    formatter = get_ipython().display_formatter.formatters['text/plain'] 
    formatter.for_type(int, lambda n, p, cycle: p.text("%d" % n)) 


hexon = hexon_ipython 
hexoff = hexoff_ipython 

So kann ich es wie folgt verwendet werden:

In [1]: 15 
Out[1]: 15 

In [2]: hexon() 

In [3]: 15 
Out[3]: 0xf 

In [4]: hexoff() 

In [5]: 15 
Out[5]: 15