Массив байтов в текст для ScintillaNET

Я пишу приложение Windows Forms на С#. Приложение позволяет пользователю выбирать файлы исходного кода из списка и отображать их в цветном коде с помощью ScintillaNET. Файлы сохраняются в виде массивов байтов в базе данных. Мне удалось преобразовать файл на жестком диске в массив байтов и сохранить его. Пользователь также должен иметь возможность редактировать код, а затем сохранять его в базе данных без необходимости сначала загружать файл на свой локальный жесткий диск, я не знаю, как это сделать.

В основном я хочу сохранить текст из элемента управления ScintillNET и преобразовать его в массив байтов. И наоборот, возьмите массив байтов и распечатайте текст, как он изначально появился в ScintillaNET.


person Robin L    schedule 23.09.2012    source источник


Ответы (2)


Вы можете использовать класс «Кодировка» из System.Text.

System.Text.Encoding.Unicode.GetBytes("Example");

Это вернет массив байтов с байтами, эквивалентными текстовой «строке», используя кодировку Unicode. Доступны и другие кодировки, но я предлагаю использовать юникод, поскольку он поддерживает больше символов (например, все, что вы найдете в чармапе Windows). В моем случае это потому, что я латинец, а некоторые буквы недоступны в UTF, и у меня есть сомнения по поводу ASCII.

Теперь, чтобы преобразовать массив байтов в строку, используйте:

byte[] exampleByteArray = MemStream.ToArray();
System.Text.Encoding.Unicode.GetString(exampleByteArray);

Этот код вернет строку, сохраненную ранее в виде массива байтов в потоке памяти. Вы можете загрузить массив байтов другими методами, в вашем случае вы загрузите его из базы данных и вызовете System.Text.Encoding.Unicode.GetString().

person Matheus Rocha    schedule 24.09.2012
comment
Хороший ответ. Просто предупреждение, ScintillaNET может потребовать определенную кодировку. Обязательно проверьте! - person Mike Christiansen; 24.09.2012

Я полагаю, вы ищете пространство имен System.Text.Encoding...

        // a sample string...
        string example = "A string example...";

        // convert string to bytes
        byte[] bytes = Encoding.UTF8.GetBytes(example);

        // convert bytes to string
        string str = System.Text.Encoding.UTF8.GetString(bytes);
person dylansweb    schedule 24.09.2012