Ho un codice Perl in cui la funzione hex() converte i dati esadecimali in decimale. Come posso farlo su Python?Come posso convertire da esadecimale a decimale in Python?
risposta
se per "dati esadecimali" Vuoi dire che una stringa della forma
s = "6a48f82d8e828ce82b82"
è possibile utilizzare
i = int(s, 16)
per convertirlo in un intero e
str(i)
convertire a una stringa decimale.
Accidenti, io amo Python. –
Per un numero esadecimale negativo, questo non funziona. –
@EricWang Funziona perfettamente per i numeri negativi: http://ideone.com/IHOQvp. A meno che tu non abbia un numero negativo codificato in formato a complemento a larghezza fissa, ma questo sarebbe un problema diverso da quello che è stato chiesto qui. (Suggerimento: usa il modulo 'struct' in questo caso.) –
int (0xff) farà la cosa giusta. Richiede solo una base esplicita se è passato come una stringa. – cassm
si potrebbe usare un eval letterale:
>>> ast.literal_eval('0xdeadbeef')
3735928559
O semplicemente specificare la base come argomento di int
:
>>> int('deadbeef', 16)
3735928559
Questo è perfetto! =] – GalDude33
Sei sicuro che si desidera convertire i dati in "decimali"? La funzione Perl converte semplicemente una stringa esadecimale in un numero intero, non in una stringa decimale. –
@SvenMarnach uso questo manuale perl hex() http://www.misc-perl-info.com/perl-hex.html "Questa funzione: ha come argomento una stringa esadecimale (o un'espressione che dopo la valutazione restituirà una stringa esadecimale) restituirà il valore decimale corrispondente " –
@Sir D: quell'articolo è molto mal scritto. Come dice Sven, 'hex' converte una stringa esadecimale in un valore intero (che è memorizzato internamente in binario ma è essenzialmente semplicemente un valore numerico senza una base). La chiamata a 'print' converte quel valore in una stringa decimale e lo stampa. – Borodin