Ich habe eine gepackte Zeichenkette mit 3 Strings, die so zusammengesetzt ist, dass ich eine ganze Zahl habe, die Byte-Länge des nächsten Elements und dann die Bytes dieses Elements und dann die Bytesize des nächsten Elements usw. als ob jemand tat:Ruby String # unpack
[a.bytesize, a, b.bytesize, b, c.bytesize, c].pack("na*na*na*")
wie kann ich auf einfache Weise richtig auspacken das? Die Perl-Lösung für dieses Problem war:
my($a, $b, $c) = unpack("(n/a*)3", $data)
für Ruby, die offenbar nicht ‚/‘ und Klammern in auspacken nicht unterstützt, verwende ich so etwas wie:
vals = []
3.times do
size = data.unpack("n").first
data.slice!(0, 2)
vals << data.unpack("a#{size}").first
data.slice!(0, size)
end
Gibt es eine einfachere Weg zu diesem?
Es sei denn, jemand eine einfache Lösung für dieses Problem findet, werde ich prüfen, eine Feature-Anfrage machen auspacken issue tracker auf Rubys, scheint zu erweitern, wie es nützlich sein kann, wenn die Umsetzung einige Merkmale Perl bekommt – Speed