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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2012, 20:42   #1
Maxislav
 
Регистрация: 13.02.2012
Сообщений: 7
Вопрос Массив к одной переменной?

Подскажите как правильно перевести.
Кусочек кода приема сообщения по TCP протоколу.

Код:
Socket s = listener.AcceptSocket(); //создаем сокет
byte[] b = new byte[65535]; // объявляем массив байт b
int k = s.Receive(b); //переменная k определяющая размер посылки 

//каждый байт переводим в символ и выводим последовательно на экран
 for (int i = 0; i < k; i++)
                {
                    Console.Write(Convert.ToChar(b[i]));
               }
так вот вопрос - как привести данные из массива байт в одну строковую переменную.
Или допустим первые 4 байта нужно сделать одним числом.
к примеру b[1] =1, b[2]=9 , b[3]=8 , b[4]=0. То как получить и записать в переменную int число 1980? или хотя бы к строковой одной переменной привести.
Maxislav вне форума Ответить с цитированием
Старый 20.02.2012, 00:26   #2
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Можно в цикле собрать строку из символов.
Код:
string s="";
//каждый байт переводим в символ и выводим последовательно на экран
 for (int i = 0; i < k; i++)
                {
                    Console.Write(Convert.ToChar(b[i]));
                    s+=b[i].ToString();
               }
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 20.02.2012, 01:53   #3
Maxislav
 
Регистрация: 13.02.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от KobolD Посмотреть сообщение
Можно в цикле собрать строку из символов.
Код:
string s="";
//каждый байт переводим в символ и выводим последовательно на экран
 for (int i = 0; i < k; i++)
                {
                    Console.Write(Convert.ToChar(b[i]));
                    s+=b[i].ToString();
               }
не совсем то, поскольку оно непосредственно выводит байты. Мне нужно каждый байт перевести сначала в Char (символ), а потом приплюсовать массив из этих символов чтобы получить строчку.
Maxislav вне форума Ответить с цитированием
Старый 20.02.2012, 02:48   #4
Maxislav
 
Регистрация: 13.02.2012
Сообщений: 7
По умолчанию

Через ж но сделал.
Чтобы не переделывать опишу ситуацию подробней. Есть у меня прибор трекер - он присылает строчку (я настраиваю на свой ip и порт).
Символы с 1 по 16 в его протоколе (то что он присылает) - это его имей.


Код:
                int i;
                char imea;
                string simea = "";
                for (i = 0; i < k; i++)
                {
                    Console.Write(Convert.ToChar(b[i]));
                    sw = fi.AppendText();
                    sw.Write(Convert.ToChar(b[i]));
                    sw.Close();
                }

                for (i = 1; i < 16; i++)
                {
                    imea = Convert.ToChar(b[i]);
                    simea += Convert.ToString(imea);

                }
      
                Console.WriteLine("");
               Console.WriteLine("имей прибора:  " + simea);//выводим с 1 по 16 символ (15 значный имей прибора)
остальное тоже уже можно дешифровать. В его протоколе координата (долгота шировта) температура, заряд батареи, состояние датчиков. Все это потом уже можно отделить. Пока я отделил его емей.
Maxislav вне форума Ответить с цитированием
Старый 20.02.2012, 08:26   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

создаете экземпляр Encoding(или готовый берете, если есть) и через него читаете строку.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
использование одной переменной в разных объектах SUDALV Visual C++ 0 20.04.2011 20:12
Численные методы : Оптимизация функций одной переменной Дырдин Общие вопросы C/C++ 1 04.04.2011 11:36
Использование одной переменной многими без глобальных Horus92 PHP 2 13.01.2011 19:28
[Delphi] Работа с реестром несколько раз (с помощью одной переменной) zotox Помощь студентам 2 26.08.2009 00:58
C#: Передать значение переменной из одной формы в другую Veiron Общие вопросы .NET 3 29.06.2009 17:43