unpack in ein Objekt (struct)

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
sashs
User
Beiträge: 10
Registriert: Dienstag 19. Februar 2013, 21:35

Hallo,

ich hoffe der Titel ist nicht zu seltsam. :-)
In Ruby gibt es die Möglichkeit die Daten in ein Rekort mit einzelnen Feldern einzulesen.

Code: Alles auswählen

class Daten < BinData::Record
        endian :big
        uint32 :len
        string :data, :read_length => :len
        uint32 :checksum
end
Da wird dann ein grob gesagt ein read gemacht und es einem Objekt davon zugewiesen, wobei die länge von data von len abhängig ist. Dann kann man auf die einzelnen Felder zugreifen, also ähnlich einem struct in c.

Ist es möglich so etwas in Python nachzubauen, ohne ctypes zu verwenden und ohne mehrere einzelne Variablen zu haben und diese nacheinander mit unpack zuzuweisen?

Gruß

Sascha
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

Hallo sashs,
wenn Du eine variable Recordgröße hast, kommst Du um mehrere unpack-Aufrufe nicht drumrum.
Aber wo ist dabei das Problem?
sashs
User
Beiträge: 10
Registriert: Dienstag 19. Februar 2013, 21:35

Hallo,

danke für deine Antwort.
Konkret ist es kein Problem. Ich hätte es anders nur schöner gefunden, da man grob gesagt einen Datensatz komplett einließt und nicht in mehreren Schritten. Es hätte ja sein können, dass es noch eine Möglichkeit gibt, die ich noch nicht kenne. :-)

Gruß

Sascha
BlackJack

@sashs: Das geht mit dem `construct`-Modul.
sashs
User
Beiträge: 10
Registriert: Dienstag 19. Februar 2013, 21:35

Oh, danke. Das sieht doch sehr gut aus.

Gruß

Sascha
Antworten