Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> string2byte 
:(
    Опции темы
nerezus
Дата 11.9.2005, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



Собственно как, предположим, из строки сделать массив типа byte

..чувствую, что трабла с кодировками будет... предположим, строка cp1251



--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Дрон
Дата 11.9.2005, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 24
Всего: 93



Сам не проверял, но по идее что-то вроде того:
Код

Encoding enc = Encoding.GetEncoding(1251); 
byte[] arr = enc.GetBytes("Abrakadabra");

и не забыть using System.Text smile



--------------------
Да. Именно так.
PM   Вверх
nerezus
Дата 11.9.2005, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



спасибо =)
а обратно ? smile


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Akina
Дата 11.9.2005, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Цитата(nerezus @ 11.9.2005, 19:31)
чувствую, что трабла с кодировками будет

Какая нафиг кодировка в массиве байтов?

Ты опиши всю задачу - чую я, речь о чем-то тривиальном...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Дрон
Дата 11.9.2005, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 24
Всего: 93



Цитата(Akina @ 11.9.2005, 21:46)
Цитата (nerezus @ 11.9.2005, 19:31)
Какая нафиг кодировка в массиве байтов?

Ты опиши всю задачу - чую я, речь о чем-то тривиальном...

nerezus всё очень правильно сказал. Как раз только благодаря тому, что он это сказал я и вспомнил про это решение smile

.NET хранит строки в 16-битном Unicode (правда я не знаю big или little endian). Можно, конечно, попробовать выковырять эти байты напрямую. Типа того:
Код

            string str = "Абракадабра";
            byte[] arr = new byte[str.Length * 2];
            for(int i=0;i<str.Length;i++)
            {
                ushort ch = (ushort)str[i];
                byte b1 = (byte)(ch & (ushort)0x00FF);
                byte b2 = (byte)((ch & (ushort)0xFF00) >> 8);
                arr[i*2] = b1;
                arr[i*2+1] = b2;
            }

Но это очень и очень плохо. Вдруг потом MS переделает формат строки.

Поэтому есть "правильный" способ преобразования. Причём MS учли то, что человеку может понадобится строка в разных кодировках, а не только в Unicode. В итоге одна и та же строка "абракадабра" может отображаться в совершенно разные массивы байтов.
Вот.

Цитата(nerezus @ 11.9.2005, 21:14)
а обратно ? smile

А вот тут ты меня разочаровал smile smile
Неужели самому догадаться сложно??? Я, например, ещё 15 секунд назад не знал решения, но просто проглядев список методов класса Encoding, который выводит Visual Studio увидел, что там есть метод GetString.
Посмотрев на его параметры я увидел, что он принимает как раз массив байтов, а возвращает строку.
В итоге, я пишу этот текст уже раз в 5 дольше, чем занял поиск решения smile

Это сообщение отредактировал(а) Дрон - 12.9.2005, 00:04


--------------------
Да. Именно так.
PM   Вверх
nerezus
Дата 12.9.2005, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



Цитата
А вот тут ты меня разочаровал
и себя тоже: никак от лени не избавлюсь =\ smile smile

Цитата
Ты опиши всю задачу - чую я, речь о чем-то тривиальном...
Код
 TcpClient cli = new TcpClient("ya.ru", 80);
NetworkStream s = cli.GetStream(); 

с NetworkStream пробую работать, там массивы байтов.
Добавлено @ 11:16
З.Ы. протокол не HTTP, WebRequest Class не предлагать smile


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
nerezus
Дата 12.9.2005, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



спасибо, получилось.

Это сообщение отредактировал(а) nerezus - 12.9.2005, 11:30


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.