Тема: c# Encoding
Показать сообщение отдельно
Непрочитано 27.08.2017, 12:52   #2
Аватар для Necroz-Team
Пользователь

По умолчанию Re: c# Encoding

Так понимаю строка пишется без длинны но с 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 байта
Necroz-Team вне форума Ответить с цитированием
Сказали спасибо: