Thanks for the very detailed explanation!
I never understood the '@'- and 'x'- examples from the very tight 'packed' pack() description before.
I agree, that my last template is more readable, but my table driven decoder is just too dumb to do it in two steps...