public async Task ReadString(ByteArrayReader reader) { Size = reader.ReadInt32(); if (Size == 0) { String = String.Empty; return; } if (Size < 0) { int size = -Size * 2; byte[] str = await reader.ReadBytes(size); String = Encoding.Unicode.GetString(str); } else { byte[] str = await reader.ReadBytes(Size - 1); reader.Skip(1); // NULL Terminator String = Encoding.ASCII.GetString(str); } }