Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

C# строка как массив чисел

376
23 августа 2010 года
Absolut
220 / / 22.11.2002
С шарпами знаком мало, поэтому может быть вопрос будет дилетантский.
Как преобразовать C# string в массив целых чисел?
И может ли такая строка содержать нулевые символы?
5
23 августа 2010 года
hardcase
4.5K / / 09.08.2005
Приведите пример строки и в какие числа она должна преобразоваться.
На деле же строка в .NET являет собой неизменяемый массив двухбайтовых Unicode-символов.
376
23 августа 2010 года
Absolut
220 / / 22.11.2002
Ну, скажем, я изначально имею массив 8/16/32-битных целых и хочу сформировать из него строку в терминологии C# string.
Чем-нибудь типа конструктора String(SByte*, Int32, Int32);
А потом обратно всё это разобрать на числа.
Краегольный камень во всем этом деле именно использование строкового типа.
Вот хочу понять, можно ли такое провернуть, или неверное использовать string в таких задачах.
5
23 августа 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Absolut
Ну, скажем, я изначально имею массив 8/16/32-битных целых и хочу сформировать из него строку в терминологии C# string.


Для чего?

Цитата: Absolut
Чем-нибудь типа конструктора String(SByte*, Int32, Int32);
А потом обратно всё это разобрать на числа.


Конструкторы System.String.
Помимо них можно использовать различные члены класса Encoding.

Цитата: Absolut
Вот хочу понять, можно ли такое провернуть, или неверное использовать string в таких задачах.


В каких задачах?

5
23 августа 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Absolut
С шарпами знаком мало, поэтому может быть вопрос будет дилетантский.
Как преобразовать C# string в массив целых чисел?



В конце концов никто не мешает использовать unsafe-код:

 
Код:
private static unsafe void PrintNumbers(string str) {
      fixed(char* pStr = str) {
        for(int i = 0; i < str.Length; ++i)
          Console.WriteLine((int)pStr);
      }
    }



Цитата: Absolut

И может ли такая строка содержать нулевые символы?


Может. Длина строки в .NET хранится отдельно (в примере по адресу: (int*)pStr - 1).

376
23 августа 2010 года
Absolut
220 / / 22.11.2002
Цитата: hardcase
Для чего?


Для взаимодействия с другим софтом, который может принять/отдать строку.
Явных массивов там нет.

Цитата: hardcase

Конструкторы System.String.
Помимо них можно использовать различные члены класса Encoding.


Понятие кодировки в данном случае не совсем приемлемо. Т.к. у меня не строка ТЕКСТА, а набор чисел.

Цитата: hardcase
В каких задачах?


Представления строки C# как массива чисел.

5
23 августа 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Absolut
Для взаимодействия с другим софтом, который может принять/отдать строку.
Явных массивов там нет.

Разве PInvoke не справляется с задачей?


Цитата: Absolut
Представления строки C# как массива чисел.

Это невозможно. Строка символов это строка символов. Максимум что возможно - это получить базовый адрес строки (см. пример выше) и оперировать им.

376
23 августа 2010 года
Absolut
220 / / 22.11.2002
Цитата: hardcase
Разве PInvoke не справляется с задачей?


Честно говоря, даже не знаю, что это.

Цитата: hardcase

Это невозможно. Строка символов это строка символов. Максимум что возможно - это получить базовый адрес строки (см. пример выше) и оперировать им.


Я понял. Спасибо.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог