[After looking at this image:]
You don't need to have this string at all. This is a pointless intermediate representation. You really need to represent a bitmap, say, 7x9. As it does not fit in a array of bytes, it's impractical to keep in in a 64-bit (unsigned) integer value, but you still can, because 63 < 64 :-) I don't think you should bother, because the glyph size can vary, if not now, then in future.
You can use, for example,
System.Drawing.Bitmap
, with any of the available editors or with one of your own, and store it in a file/stream in a usual way. You can access bit using these methods:
http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.lockbits.aspx[
^].
You can extract bits from this bitmap, without any redundant strings. Again, same bitwise operations, which you need to know anyway.
—SA