Is there an easy way in Spicy to parse something of known size, but then limit the variable to a set amount of bytes?
For example, I have a data_size which is parsed, and then a data field after that. Can be anywhere from 0 to 300.
I want to store the the full data if data_size is <=100, and if it’s over 100, only the first 100 bytes.
I need to be able to have a condition on it also if a parsed value id is not 0.
I was doing this, which works and puts all the bytes over 100 into data2 (which I can throw out for now) but this won’t work if data_size is <100, and I want the data to go into the same variable name if data_size is <=100 or >100.
data: bytes &size=100 if (self._id !=0 && self.data_size > 99);
data2: bytes &size=self.data_size-100 if (self._id !=0 && self.data_size > 100);
It would be great if I could just do this, but I’m not sure how in spicy:
if (self.data_size < 100 && self.id !=0)
data: bytes &size=self.data_size;
else if (self.id !=0)
data: bytes &size=100;
data2: bytes &size=self.data_size-100; # (or decode all this into data and just ignore anything after 100 bytes)
else
data: b"";