Ähnlich wie diese Frage versuche ich es lese einen ID3v2-Tag-Header ein und habe Probleme herauszufinden, wie man einzelne Bytes in Python bekommt.
Ich lese zuerst alle zehn Bytes in eine Zeichenfolge. Ich möchte dann die einzelnen Informationen analysieren.
Ich kann die zwei Versionsnummer-Zeichen in der Zeichenfolge abrufen, aber dann habe ich keine Ahnung, wie ich diese zwei Zeichen nehmen und eine Ganzzahl daraus erhalten soll.
Das Strukturpaket scheint zu sein, was ich will, aber ich kann es nicht zum Laufen bringen.
Hier ist mein Code so weit (Ich bin sehr neu zu Python BTW ... also nimm es leicht auf mich):
%Vor%Es ist offensichtlich ein Mist, irgendeinen Wert auszudrucken, weil sie nicht korrekt formatiert sind.
Wenn Sie eine Zeichenfolge mit 2 Byte haben, die Sie als 16-Bit-Ganzzahl interpretieren möchten, können Sie dies tun:
%Vor%Beachten Sie, dass das & gt; ist für Big-Endian (der größte Teil der Ganzzahl kommt zuerst). Dies ist das Format, das ID3-Tags verwenden.
Für andere Integer-Größen verwenden Sie unterschiedliche Formatcodes. z.B. "i" für eine 32-Bit-Ganzzahl mit Vorzeichen. Details finden Sie in der Hilfe (struct).
Sie können auch mehrere Elemente gleichzeitig entpacken. zB für 2 unsigned shorts, gefolgt von einem vorzeichenbehafteten 32 bit Wert:
%Vor%Nach Ihrem Code suchen Sie (in Reihenfolge):
Die Formatzeichenfolge dafür wäre:
%Vor%Ich versuche, einen ID3v2-Tag-Header einzulesen
FWIW, dafür gibt es bereits ein Modul .
Ich würde das struct
-Paket empfehlen, aber dann hast du gesagt, du hättest es versucht. Versuchen Sie Folgendes:
Die Funktion pack()
konvertiert Python-Datentypen in Bits und die Funktion unpack()
konvertiert Bits in Python-Datentypen.