Так понимаю строка пишется без длинны но с null терминатором?
Код:
/// <summary>
/// Get null terminated string
/// </summary>
/// <param name="maxLen"></param>
/// <returns></returns>
public string GetNTString(ushort maxLen = ushort.MaxValue)
{
return GetNTString(Encoding.Unicode, maxLen);
}
/// <summary>
/// Get null-terminared string
/// </summary>
/// <param name="encoding"></param>
/// <param name="maxLen"></param>
/// <returns></returns>
public string GetNTString(Encoding encoding, ushort maxLen = ushort.MaxValue)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < maxLen; i++)
{
short sym = encoding.IsSingleByte ? GetInt8() : GetInt16();
if (sym == 0)
break;
sb.Append((char)sym);
}
return sb.ToString();
}
Где у меня GetInt8() читай 1 байт, где GetInt16() читай 2 байта