BinaryReader ReadString с указанием длины?

Я работаю над анализатором для получения информации UDP, ее анализа и сохранения. Для этого ям, используяBinaryReader так как это будет в основном двоичная информация. Хотя некоторые из них будут строками.MSDN говорит дляReadString() функция:

Читает строку из текущего потока. Строка имеет префикс длины, закодированный как целое число семь битов за раз.

И я полностью понимаю это до "семь бит за раз " которую я пытался просто игнорировать, пока не начал тестирование. Я'Я создаю свой собственный массив байтов, прежде чем поместить его вMemoryStream и пытается прочитать это сBinaryReader, Вот'То, что я сначала думал, будет работать:

byte[] data = new byte[] { 3, 0, 0, 0, (byte)'C', (byte)'a', (byte)'t', }
BinaryReader reader = new BinaryReader(new MemoryStream(data));
String str = reader.ReadString();

Знаяint 4 байта (и играю достаточно долго, чтобы выяснить, чтоBinaryReader Little Endian) Я передаю его длиной 3 и соответствующими буквами. тем не мениеstr в конечном итоге держит\0\0\0, Если я уберу 3 ноля и просто

byte[] data = new byte[] { 3, (byte)'C', (byte)'a', (byte)'t', }

Затем он читает и сохраняетCat должным образом. Для меня это противоречит документации о том, что длина должна быть целым числом. Сейчас я'Я начинаю думать, что они просто означают число без десятичного знака, а не тип данныхint, Значит ли это, чтоBinaryReader никогда не может прочитать строку, превышающую 127 символов (поскольку это будет 01111111, соответствующий 7-битной части документации)?

Я пишу протокол и должен полностью понять, что яЯ начинаю, прежде чем передать нашу документацию нашим клиентам.

Ответы на вопрос(1)

Ваш ответ на вопрос