Seite 1 von 1

Hexadezimal in Dezimal

Verfasst: Mittwoch 10. Oktober 2018, 00:51
von snak
Hallo zusammen,

ich bin neu hier im Forum, aber auch neu in Python und der Programmierung generell.
Nun möchte ich ein paar Zeilen schreiben, die eine gegebene hexadezimal Zahl in eine dezimal Zahl transformieren.

Code: Alles auswählen

from functools import reduce
hexNum = '12fb3a' ; l = len(hexNum)

def f(x,y): 
    return x+y

reduce(f,[ int(hexNum[i],16)*16**(l-i) for i in range(l)])
Kann mir jemand sagen, wo hier mein Fehler ist?
Die eingegebene Hexadezimalzahl '12fb3a' müsste als Dezimalzahl 1243962 ergeben.

Ich nehme an, dass mein Fehler in der int(..) Funktion liegt. Kann mir jemand sagen, was ich ändern sollte?

Danke!

Re: Hexadezimal in Dezimal

Verfasst: Mittwoch 10. Oktober 2018, 08:09
von sls
Hi,

mir ist der Sinn deiner Übung nicht ganz klar. Die int()-Funktion stellt im Endeffekt alles dafür bereit, was du benötigst.

Python in der interaktiven Shell:

Code: Alles auswählen

>>> int('12fb3a', 16)
1243962

Re: Hexadezimal in Dezimal

Verfasst: Mittwoch 10. Oktober 2018, 08:13
von narpfel
Moin und willkommen im Forum!

Was passiert in deinem Code mit der Einerstelle?

Ein `reduce(add, ...)` lässt sich übrigens leichter als `sum(...)` ausdrücken. Und die Additionsfunktion muss man sich auch nicht selber schreiben, die gibt’s im Modul `operator`.

Re: Hexadezimal in Dezimal

Verfasst: Mittwoch 10. Oktober 2018, 09:03
von Sirius3
@snak: wenn Dir nicht klar ist, was da passiert, schreiben diese sehr kompakten Ausdruck doch als for-Schleife und gib die Zwischenergebnisse der einzelnen Schritte aus. Dann findest Du wahrscheinlich eher Deinen Fehler.

Re: Hexadezimal in Dezimal

Verfasst: Mittwoch 10. Oktober 2018, 12:10
von snak
Vielen Dank schonmal!
Es sollte ein Beispiel / Anwendung für die reduce-Funktion sein.
Klar ansonsten könnte ich einfach int() nehmen :-)