Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2011, 06:25   #1
free6878
Пользователь
 
Регистрация: 01.09.2010
Сообщений: 22
Восклицание Массив байт в Visual C#

Проблема вот в чём ! Как задать массив для байт с динамическим размером!
Например:
Код:
byte[] buffer = byte [256];
Обычно задают массив для байт так, и указывают размер.
Вопрос: Как задать буфер с резиновым размером, т.е. чтобы он увеличивался
по мере поступления в него информации и приобретал размер принятой информации?
free6878 вне форума Ответить с цитированием
Старый 01.03.2011, 11:52   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
            byte[] a = new byte[100];
            Array.Resize(ref a, a.Length + 100);
Если элементы добавляются/удаляются часто, то конечно лучше юзать List<T> или любую другую подходящую коллекцию, т.к. Array.Resize() создаёт новый массив каждый раз.

> по мере поступления в него информации и приобретал размер принятой информации

Можно воспользоваться классом MemoryStream (или любым другим потоком):

Код:
            byte[] block = new byte [0x1000]; // blocks of 4K.
            MemoryStream ms = new MemoryStream();
            ms.Write(block, 0, 0x1000);
            ms.Write(block, 0, 0x1000);
            //
            ms.Seek(500, SeekOrigin.Begin);
            ms.Read(block, 0, 0x1000);
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 01.03.2011 в 12:41.
veniside вне форума Ответить с цитированием
Старый 01.03.2011, 18:54   #3
free6878
Пользователь
 
Регистрация: 01.09.2010
Сообщений: 22
Восклицание

Извините, я немного неправильно задал вопрос! Речь идёт о массиве байт который создаётся для записи в него поступающего по сети сообщения. Ещё до перекодировки сообщения! Просто когда посылаешь сообщение и кодируешь его в байты, просто при объявлении массива байт указываешь вместо размера "взять длину сообщения", а вот когда принимаешь нужно точно указывать максимально возможную длину массива ! или нет!?

Последний раз редактировалось free6878; 01.03.2011 в 18:56.
free6878 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual C++.Двухмерный массив sunf Помощь студентам 1 17.12.2010 16:59
Найти байт максимальным количестов единиц и байт с максмальным количеством нулей и разность (ассемблер) Beren42 Помощь студентам 0 15.12.2010 20:32
Assembler (массив, разм-ю 9 байт, проверка наличия 3х единиц в коде эл-та) Exelence Помощь студентам 1 05.12.2010 20:05
Как конвертировать массив символов в массив байт davinci C++ Builder 6 30.10.2010 18:09
Как проверить наличие в конкретной папке DLL, а потом на вход каждой подать массив байт,и на выходе тоже. Sanches_Ramires Общие вопросы .NET 1 02.02.2009 15:02