unpack

29/09/2011 - 11:49 von Michael Welle | Report spam
Hallo,

ich wuerde gerne eine Struktur auspacken. Beispiel:

$inp = "34abcd5abcde6abcdef";
($cnt, @res) = unpack( "a (a/A*)*", $inp );

Die 3 gibt die Anzahl der Elemente an, diese wiederum bestehen aus je
einer Laengeangabe und dem Wert. Obiges Beispiel funktioniert nicht mehr
gut, wenn die Struktur erweitert zu "3barfoo4abcd5abcde6abcdeffoo" (die
Anzahl der Elemente steht nicht mehr direkt vor den Elementen,
abschliessend kommen Elemente ohne Laengenangabe). Dann waere wohl
unpack( "a a6 (a/A*)3... besser. D.h. der zuvor gelesen Wert 3 muesste
Teil des Musters werden. Muss ich in desem Fall die Struktur mehrstufig
angehen (und zB. erst das Laengenfeld ermitteln) oder geht es einfacher?

VG
hmw

biff4emacsen - A biff-like tool for (X)Emacs
http://www.c0t0d0s0.de/biff4emacsen...acsen.html
Flood - Your friendly network packet generator
http://www.c0t0d0s0.de/flood/flood.html
 

Lesen sie die antworten

#1 Tim Landscheidt
29/09/2011 - 17:08 | Warnen spam
Michael Welle wrote:

ich wuerde gerne eine Struktur auspacken. Beispiel:

$inp = "34abcd5abcde6abcdef";
($cnt, @res) = unpack( "a (a/A*)*", $inp );

Die 3 gibt die Anzahl der Elemente an, diese wiederum bestehen aus je
einer Laengeangabe und dem Wert. Obiges Beispiel funktioniert nicht mehr
gut, wenn die Struktur erweitert zu "3barfoo4abcd5abcde6abcdeffoo" (die
Anzahl der Elemente steht nicht mehr direkt vor den Elementen,
abschliessend kommen Elemente ohne Laengenangabe). Dann waere wohl
unpack( "a a6 (a/A*)3... besser. D.h. der zuvor gelesen Wert 3 muesste
Teil des Musters werden. Muss ich in desem Fall die Struktur mehrstufig
angehen (und zB. erst das Laengenfeld ermitteln) oder geht es einfacher?



Ist das ein real existierendes Format?

Tim

Ähnliche fragen