You can use the __byte((int*)bufer, N) compiler "intrinsic" to access the Nth byte of a given buffer. That could make retrieval easier. However I don't think it would save any space when creating the array of chars because the litteral in
__byte((int*)buffer, N) = 'a';
is probably still going to be stored in a 16 bit char.
You could still build the array by doing hex and then grabbing the Nth char with the __byte((int*)buffer, N) intrinsic.
As far as building the hex litterals for the array some excel or python magic could help.