A protocol like FAST for encoding data is very clever in minimizing the amount of data needed to be sent. Essentially one gets a char*, reading the first couple bytes as an integer gives you an id number which points you to instructions on how to decode the rest (i.e. it tells you the rest of the bytes are, for example, respectivley an int, a string, an unsigned int, another unsigned int, a nested message etc..) and the next couple bytes tell you (in each bit) whether the subsequent fields are there or not. 8th bit in every byte is reserved to denote boundaries between the data.
Decoding such a protocol seems impossible to do without a linear traversal of bit ops (ands, ors, shifts, bit checks)...is there any way to do this faster?
I think you won't find a technique or approach faster than just described. Such protocols are meant to parse them sequentially. The only reason to continue searching is to find a more convenient way to work with a data.
As far as I see, there are three ways: