Wie teilt man ein byte-string in einzelne bytes in python
Ok also ich habe mit python zu versuchen, erstellen Sie ein waveform-Bild und ich bekomme die raw-Daten aus der .wav
- Datei mit song = wave.open()
und song.readframes(1)
gibt :
b'\x00\x00\x00\x00\x00\x00'
Was ich wissen möchte ist, wie ich aufgeteilt in drei einzelne bytes, z.B. b'\x00\x00'
, b'\x00\x00'
, b'\x00\x00'
weil jeder frame 3 bytes breit ist, so brauche ich den Wert der einzelnen Bytes in der Lage sein, um eine Welle zu bilden. Ich glaube, dass ist wie muss ich es trotzdem tun.
InformationsquelleAutor Razzad777 | 2013-11-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie schneiden auf
byte
Objekte:Beim Umgang mit diesen frames, aber Sie wahrscheinlich auch wissen wollen, über
memoryview()
- Objekte; diese lassen Sie bei der Interpretation der bytes als C-Datentypen ohne extra Aufwand auf Ihrem Teil, einfach, indem man einen 'Blick' auf die zugrunde liegende bytes:Den
mv
Objekt ist jetzt eine Ansicht "Speicher" zu interpretieren, jeden 2 bytes als unsigned short, so ist es jetzt die Länge 3, und jeder index ist ein integer-Wert, basierend auf der zugrunde liegenden bytes.es bedeutet, dass das input-Objekt ist nicht ein
bytes
,bytearray
odermemoryview
Objekt oder eine andere Art implementiert, dass die buffer " - Protokoll. Don ' T pass in einem string zum Beispiel.Aber man verwendet ein string ('H') in deinem Beispiel hast du nicht? Auch habe ich versucht vorbei in ein bytearray geschrieben und bekam die gleiche Fehlermeldung.
Ich hab eingestellt der name der Variablen verwendet, in diesem Beispiel klarer zu werden.
nicht die
.cast()
nennen, diememoryview()
Anruf wirft die Ausnahme, ich bin sicher.InformationsquelleAutor Martijn Pieters
Hier ist ein Weg, können Sie teilen Sie die bytes in einer Liste:
ergibt:
InformationsquelleAutor kyle k
Wo kann ich mehr über die folgende Zeile?
Verstehe ich nicht
data[i:i+2]
range
iterator ist das zählen von null auflen(data)
in den Schritten zwei und speichert diese in der Variableni
, erstellen Sie ein slice ausdata
bestehend aus bytes von offseti
zui+2
und fügt hinzu, dass auf der Liste.InformationsquelleAutor E. Pashov