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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2015, 17:25   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию Как сделать из string бинарных данных Unicode txt

Мне нужно по бинарным данным, которые я имею, восстановить текстовую информацию и вывести ее. Я вот все понимаю, но как непосредствено сконвертировать строку вида "0000110111110011111100110011001111 110001" в строку типа "Hello"?
Krasi вне форума Ответить с цитированием
Старый 05.11.2015, 17:47   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я не вижу у Вас "бинарных данных".

из строки с ноликами и единичками нужно
1) перевести эти нолики и единички в байты, записать в массив байт ( Byte[] )
2) используя функцию перекодировки и кодовую таблицу получить строку из массива байт.
Код:
Encoding.GetEncoding(65001).GetString(bytes);
насчёт примеров кода, посмотрите тему http://programmersforum.ru/showthread.php?t=135962

Последний раз редактировалось Serge_Bliznykov; 05.11.2015 в 17:50.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.11.2015, 09:19   #3
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

А как проще перевести? Я так понял, надо в цикле брать по 8 значений и добавлять их с весами к конкретному числу массива byte.
Тогда
Код:
string str = "0111100001111100"
byte[] bytes = new byte [str.Length/8]
for (j=0; j<str.Length/8; j++){
for (i = 0; i<8; i++)
bytes[j][i] += (byte)str[i]; }
Это мое понимание. Но я не нашел, как конвертировать из строки в byte, и можно ли в байте постучаться к конкретному биту. Расскажите, пожалуйста, как это правильно и быстро делается?

Последний раз редактировалось Krasi; 06.11.2015 в 09:22.
Krasi вне форума Ответить с цитированием
Старый 06.11.2015, 09:31   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Convert.ToByte
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.11.2015, 09:42   #5
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

А как разделить строку на 8 символов? Я знаю, что split, а как точно - пока не понял
Krasi вне форума Ответить с цитированием
Старый 06.11.2015, 09:46   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

String.Substring
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.11.2015, 10:08   #7
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Код:
string[] B_sc8 = new string[B_sc.Length / 8]; int k = 0;
            for (int i = 0; i < B_sc.Length; i = i+8)
                {B_sc8[k] = B_sc.Substring(i, 8); k++;}

            byte[] B_bytes = new byte[B_sc8.Length];
            for (int i = 0; i < B_sc8.Length; i++) {
                B_bytes[i] = Convert.ToByte(B_sc8[i]);
            }
Первый цикл отлично разбивает мою строку на 256 строк по 8 символов (например, в массиве строк получается строка "01100110").
Когда второй цикл начинает конвертировать это в массив byte[], то Convert.ToByte(B_sc8[i]), а то есть Convert.ToByte("01100110") не прокатывает. Почему?
Krasi вне форума Ответить с цитированием
Старый 06.11.2015, 10:22   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Потому что надо читать описание параметров метода по первой ссылке.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.11.2015, 10:47   #9
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Все-равно не помогает:
Код:
                B_bytes[i] = Convert.ToByte(B_sc8[i], 8);
Krasi вне форума Ответить с цитированием
Старый 06.11.2015, 10:48   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Надо читать, а не писать что попало.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вытащить текст из Edit1 - unicode string вместо wchar_t calypso C++ Builder 4 01.03.2013 17:48
Конвертер бинарных данных royun Общие вопросы Delphi 5 30.08.2011 11:50
idHttp - скачать unicode текстовый файл в String и засунуть в TStringStream maxefficiently Работа с сетью в Delphi 0 29.05.2011 21:50
как сделать из string char biolog Паскаль, Turbo Pascal, PascalABC.NET 9 28.05.2008 10:19
Сконвертировать Olevariant (Unicode) в string Sashunya Общие вопросы Delphi 8 08.09.2007 00:49