protected virtual string ReadStringAt(uint index) { int length = 0; int start = (int) index; for (int i = start; ; i++) { if (data [i] == 0) break; length++; } return Encoding.UTF8.GetString (data, start, length); }