I am in the middle of this problem now as well.
I am coding a construct for an EDID.
The closest solution I have come up with is to take the entire odd ball structure into an adapter and manipulate it there.
This is unfortunately not too clean. I don't know how to encode the data where two pointers are writing to the same byte.
It also gets really messy for the extended display timing descriptor.
Is there a better way to cope with these mixed up descriptors?
Steve