One way is to, define that char* [] as a global and use its indices for accessing it:
char stringLiterals [] = { "0101010", "10010010", "111", "010100100", ... };
Usage:
Instead of
char *p = stringLiteral[3];
use
unsigned int idx = 3;
Rationale: If you are compacting this string into bits for serialization purpose than it's ok. But otherwise I don't see any use case of compacting them. In my above solution, it doesn't use any extra memory. You already have an array of string literals; I am just asking to declare in global scope and use its index.
Also, if the string size is > 32 bytes then, you won't be able to store it in a single 32-bit int.
<<operator should help you.