Problem mit Hexwerten in Strings.

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
jth
User
Beiträge: 2
Registriert: Freitag 12. Mai 2006, 22:06

Guten Abend,

vorweg, nichts für ungut für den etwas wagen Threadtitel, ich bin mir leider nicht ganz sicher ob mein Problem tatsächlich damit zusammenhängt.

Ich habe ein Dictionary, welches den Schlüssel "track_number" besitzt, der den dazugehörigen Wert '\x02' trägt. Eigentlich sollte dies ja eine Hexadezimale Zahl sein, allerdings sagt mir ein

Code: Alles auswählen

print type(metainfo["album_track"])
dass es sich dabei um einen String handelt. Mein Ziel ist es nun diesen String in einen Integer umzuwandeln, der dann auch den tatsächlichen, dezimalen Wert 2 trägt. Ich habe schon versucht mit atoi aus dem Modul string zu arbeiten, allerdings gibt mir dies ein
jan@kiste:~/work/pyMusort$ ./mp3meta.py
Traceback (most recent call last):
File "./mp3meta.py", line 45, in ?
meta = instance.get_metainfo('test.mp3')
File "./mp3meta.py", line 38, in get_metainfo
print atoi(metainfo["album_track"])
File "/usr/lib/python2.4/string.py", line 403, in atoi
return _int(s, base)
zurück.

Meine Frage ist jetzt ob es eine Möglichkeit gibt Strings wie z.B. "\x02" oder "\x8a" in einen dezimalen Integer zu wandeln.

Vielen Dank schonmal im vorraus.

Jan
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Wenn die Zahlen nur im Bereich 0 bis 255 sein können, ist in diesem Falle ord das richtige:

Code: Alles auswählen

ord("\x02") # == 2
ord("\x20") # == 32
jth
User
Beiträge: 2
Registriert: Freitag 12. Mai 2006, 22:06

Joghurt hat geschrieben:Wenn die Zahlen nur im Bereich 0 bis 255 sein können, ist in diesem Falle ord das richtige:

Code: Alles auswählen

ord("\x02") # == 2
ord("\x20") # == 32
Wow, das ging ja schnell.

Funktioniert tadellos. Da die Werte tatsächlich nie größer als 255 werden ist die Lösung denke ich optimal.

Besten Dank. :)
Antworten