Wie teilt man einen Byte-String in separate Bytes in Python?

8

Ok, ich habe Python benutzt, um ein Wellenform-Bild zu erstellen, und ich bekomme die Rohdaten von der .wav -Datei mit song = wave.open() und song.readframes(1) , was folgendes zurückgibt:

%Vor%

Was ich wissen möchte, ist, wie ich dies in drei separate Bytes aufteile, z. b'\x00\x00' , b'\x00\x00' , b'\x00\x00' , da jeder Rahmen 3 Bytes breit ist, also brauche ich den Wert jedes einzelnen Bytes, um eine Wellenform bilden zu können. Ich glaube, so muss ich es trotzdem machen.

    
Razzad777 16.11.2013, 22:04
quelle

2 Antworten

15

Sie können Slicing für byte -Objekte verwenden:

%Vor%

Wenn Sie mit diesen Frames arbeiten, möchten Sie wahrscheinlich auch etwas über memoryview() objects ; Dadurch können Sie die Bytes als C-Datentypen ohne zusätzliche Arbeit interpretieren, indem Sie einfach eine 'Ansicht' auf die zugrunde liegenden Bytes werfen:

%Vor%

Das Objekt mv ist jetzt eine Speicheransicht, die alle 2 Bytes als vorzeichenlose Abkürzung interpretiert. also hat es jetzt die Länge 3 und jeder Index ist ein ganzzahliger Wert, basierend auf den zugrunde liegenden Bytes.

    
Martijn Pieters 16.11.2013, 22:07
quelle
8

Hier können Sie die Bytes in eine Liste aufteilen:

%Vor%

gibt das Ergebnis:

%Vor%     
kyle k 16.11.2013 22:43
quelle

Tags und Links