Seite 1 von 1

Problem mit Hexwerten in Strings.

Verfasst: Freitag 12. Mai 2006, 23:27
von jth
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

Verfasst: Freitag 12. Mai 2006, 23:29
von Joghurt
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

Verfasst: Freitag 12. Mai 2006, 23:32
von jth
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. :)