public string ReadUTF8String()
{
if (m_Index >= m_Size)
return String.Empty;
int count = 0;
int index = m_Index;
while (index < m_Size && m_Data[index++] != 0)
++count;
index = 0;
byte[] buffer = new byte[count];
int value = 0;
while (m_Index < m_Size && (value = m_Data[m_Index++]) != 0)
buffer[index++] = (byte)value;
return UTF8.GetString(buffer);
}