Each character contains 6 bits. So you can store a value between 0 and 63 in one character (2^6=64). Starting character is the blank " " which has the value 0. The first charcter in the string is the one with the lowest bits (0-5).
The new string will automatically be extended if needed.
string s;
s=set_bit("?",5);
Because "?" has a valueof 31 the variable s will now contain
the charcter "_" wich is equal to 63 (31+2^5=63).
string s;
s=set_bit("78",3);
s=set_bit(s,8);
s will now contain the string "?<".