Ho una stringa compressa di 3 stringhe che è composta in un modo tale da avere un numero intero, che specifica la lunghezza del byte dell'elemento successivo e quindi i byte di quell'elemento e quindi il byte dell'elemento successivo, ecc. come se qualcuno lo facesse:Ruby String # unpack
[a.bytesize, a, b.bytesize, b, c.bytesize, c].pack("na*na*na*")
Come posso disimballarlo correttamente in un modo semplice? La soluzione a questo problema Perl era: ci
vals = []
3.times do
size = data.unpack("n").first
data.slice!(0, 2)
vals << data.unpack("a#{size}").first
data.slice!(0, size)
end
è un più semplice:
my($a, $b, $c) = unpack("(n/a*)3", $data)
per Ruby, che a quanto pare non supporta '/' e parentesi a disfare, sto usando qualcosa di simile modo per questo?
A meno che qualcuno trova una soluzione semplice a questo, io considero fare una richiesta di funzionalità per espandere scompattare l'issue tracker di rubino, sembra che può essere utile se l'implementazione ottiene alcune caratteristiche Perl – Speed