Tôi có một chuỗi gồm 3 chuỗi được tạo thành theo cách sao cho tôi có một số nguyên, chỉ định chiều dài byte của mục tiếp theo và sau đó là byte của mục đó và sau đó là byteize của mục tiếp theo, v.v. như thể ai đó đã làm:Chuỗi Ruby # unpack
[a.bytesize, a, b.bytesize, b, c.bytesize, c].pack("na*na*na*")
Làm cách nào tôi có thể giải nén chính xác một cách đơn giản? Các giải pháp Perl cho vấn đề này là:
my($a, $b, $c) = unpack("(n/a*)3", $data)
Đối với ruby, mà dường như không hỗ trợ '/' và dấu ngoặc đơn ở giải nén, Tôi đang sử dụng gì đó như:
vals = []
3.times do
size = data.unpack("n").first
data.slice!(0, 2)
vals << data.unpack("a#{size}").first
data.slice!(0, size)
end
Có một dễ dàng hơn cách này?
Trừ khi ai đó tìm thấy giải pháp đơn giản cho điều này, tôi sẽ xem xét yêu cầu tính năng mở rộng giải nén trên trình theo dõi vấn đề của Ruby, có vẻ hữu ích nếu triển khai một số tính năng của Perl – Speed