Hexadezimal in Dezimal

Code-Stücke können hier veröffentlicht werden.
Antworten
snak
User
Beiträge: 4
Registriert: Mittwoch 10. Oktober 2018, 00:32

Mittwoch 10. Oktober 2018, 00:51

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!
Benutzeravatar
sls
User
Beiträge: 440
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: ::

Mittwoch 10. Oktober 2018, 08:09

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
When we say computer, we mean the electronic computer.
narpfel
User
Beiträge: 252
Registriert: Freitag 20. Oktober 2017, 16:10

Mittwoch 10. Oktober 2018, 08:13

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`.
Sirius3
User
Beiträge: 11979
Registriert: Sonntag 21. Oktober 2012, 17:20

Mittwoch 10. Oktober 2018, 09:03

@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.
snak
User
Beiträge: 4
Registriert: Mittwoch 10. Oktober 2018, 00:32

Mittwoch 10. Oktober 2018, 12:10

Vielen Dank schonmal!
Es sollte ein Beispiel / Anwendung für die reduce-Funktion sein.
Klar ansonsten könnte ich einfach int() nehmen :-)
Antworten