Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Преобразование System::String^ в unsigned char

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

DamnCliffracers

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет. Пишу программу в Visual C++ 2015, возникла проблема.
Имеется функция, конвертирующая массив символов unsigned char в Base64. Все работает нормально, если задавать массив прямо в коде таким вот образом:
 
unsigned char CA[] = { "Бла-бла" };
 
Гораздо веселее, если попытаться скормить ей текст из textBox->Text. В этом случае, чтобы все работало правильно, нужно строку System::String^ преобразовать в массив unsigned char. Я пробовал это делать двумя функциями:
 
Marshal::StringToHGlobalAnsi
marshal_context::marshal_as
 
Если смотреть по кодам полученных в результате символов, то все вроде бы нормально. Но вот функция, конвертирующая символы в Base64, обрабатывает их почему-то неправильно.
Значит, все же есть какая-то разница между тем, что они дают на выходе, и тем, что попадает в массив CA, объявленный выше. В чем она может заключаться и как это можно обойти?

Всего записей: 13 | Зарегистр. 27-02-2017 | Отправлено: 16:47 10-03-2017
landy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unicode?

Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 12:09 11-03-2017
DamnCliffracers

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пробовал и Юникод, и многобайтовую кодировку. Одно и то же.

Всего записей: 13 | Зарегистр. 27-02-2017 | Отправлено: 09:17 13-03-2017 | Исправлено: DamnCliffracers, 10:43 13-03-2017
DamnCliffracers

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хм, тут метод тыка показал интересную вещь. В общем, структура проекта на пальцах: есть файл 1.h, в котором объявляется массив указателей на строки (это вот как раз с ними я и воюю) и функция, которая с ним работает. Есть файл 2.h, в котором описывается форма, из которой вызывается эта функция.
Объявляется массив примерно так:
 
unsigned char * CA[] = { (unsigned char *)"qqq",  (unsigned char *)"www", };
 
Если это прописать в 1.h, то все работает, даже если вместо "qqq" и "www" написать "ййй" и "ццц" соответственно.
Если объявление перенести в 2.h, то с русскими символами работать нормально перестает. Но с английскими все норм.
Помогите понять, в чем тут дело)

Всего записей: 13 | Зарегистр. 27-02-2017 | Отправлено: 12:02 16-03-2017 | Исправлено: DamnCliffracers, 12:04 16-03-2017
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Преобразование System::String^ в unsigned char


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru