Название: преобразовать QString к BYTE* Отправлено: nikeo от Май 22, 2013, 10:24 Добрый день!
Возникла такая ппроблема: Мне нужно заполнить структуру cert_info,а именно cert_info.SerialNumber, содержит два поля типа DWORD и BYTE*. То есть,получается так: Код: cert_info.SerialNumber.cbData = getSizeOfSerialNumber();//возвращает она размер серийного номера И в итоге, в сертификат безопасности записывается неправельный номер.( Но если записать так: Код: cert_info.SerialNumber.cbData = getSizeOfSerialNumber(); то все запишется нормально!в чем может заключаться проблема? Название: Re: преобразовать QString к BYTE* Отправлено: Bepec от Май 22, 2013, 10:38 parseSerNum троянский конь. Уверены что он именно то возвращает?
Название: Re: преобразовать QString к BYTE* Отправлено: nikeo от Май 22, 2013, 10:49 он возвращает строку типа char*,и ее значение равно тому что нужно,так что да, уверен...а вот значение pbData, тоже равно тому же,хотя и не должно:
при рабочем варианте,оно содержит "****", и их количество зависит от числа в cbData...но если передавать через функцию,то оно содержит именно строку типа "\x..\x..\x..." Хотя я начинаю думать, что вы от части правы. Название: Re: преобразовать QString к BYTE* Отправлено: nikeo от Май 22, 2013, 11:41 Вот что я понял,простите за "****")))
Если я преобразую строку типа QString к char*, то получаю (скажем если "\x2A\x2A\x2A\x2A"), то получаю именно запись,а мне нужно чтобы они преобразовались в чиловые значения,то есть, на сколько я понимаю, \x2A в таблице ASCII как раз соответствует зведочке. Как такое можно сделать? Или как собрать строку,если вводится к примеру "2A 2A 2A 2A" в lineEdit, чтобы получилось именно так? Название: Re: преобразовать QString к BYTE* Отправлено: kambala от Май 22, 2013, 11:46 попробуй QString::utf16()
Название: Re: преобразовать QString к BYTE* Отправлено: nikeo от Май 27, 2013, 11:50 пробовал,не помогло(
Название: Re: преобразовать QString к BYTE* Отправлено: thechicho от Май 27, 2013, 12:18 Цитировать @Idan K: I use (BYTE*)qstring.toUtf8().constData() to put data into DATA_BLOB. I suppose I must use QString::fromUtf8((const char*)datablob.pbData) to get data... Название: Re: преобразовать QString к BYTE* Отправлено: thechicho от Май 27, 2013, 12:19 Цитировать #include <QtCore> #include <iostream> int main(int argc,char** argv) { QString string = "This is my text !!"; //Convert QString to Byte Array Here QByteArray array (string.toStdString().c_str()); //Let's Print ByteArray Data std::cout<<array.data()<<std::endl; } Название: Re: преобразовать QString к BYTE* Отправлено: nikeo от Май 29, 2013, 11:59 не работает.
Название: Re: преобразовать QString к BYTE* Отправлено: kambala от Май 29, 2013, 12:19 тебе надо из строки "\x2A\x2A\x2A\x2A" получить массив чисел {0x2A, 0x2A, 0x2A, 0x2A}, правильно? тогда не понимаю чем тебя QString::utf16() не устраивает — возвращает именно массив из чисел 42.
Название: Re: преобразовать QString к BYTE* Отправлено: nikeo от Май 30, 2013, 08:46 Вот смысл то в том,что при преобразовании BYTE* возвращает ересь, типа "Йииииииееееееннннн....." и так далее...я может что то перевожу не так?
Название: Re: преобразовать QString к BYTE* Отправлено: nikeo от Май 30, 2013, 09:02 И при таком преобразовании (BYTE*)str.utf16(); значение переменной становится равным "\", а должно быть "****"
Название: Re: преобразовать QString к BYTE* Отправлено: thechicho от Май 30, 2013, 09:05 напишите что у вас на входе и как это должно выглядеть на выходе, тогда может получится подсказать, в чем у вас проблема.
Название: Re: преобразовать QString к BYTE* Отправлено: kambala от Май 30, 2013, 09:15 попробуй тогда (BYTE*)s.toAscii().data()
Название: Re: преобразовать QString к BYTE* Отправлено: nikeo от Май 30, 2013, 09:52 Всем спасибо,с горем пополам все решилось,но сам процесс не радует)))
Вот как получается: Из lineEdit получаем строку "2a 2a 2a 2a" из нее делаем QString str, значение которой равно "\x2a\x2a\x2a\x2a" и получаем число элементов size,которое равно соответственно 4. и простите "идиотское" преобразование: Код: char* temp = new char[size]; вот собственно так,если кто то может подсказать аналогичный,но более простой путь,буду признателен)) Название: Re: преобразовать QString к BYTE* Отправлено: Авварон от Май 30, 2013, 10:15 Всем спасибо,с горем пополам все решилось,но сам процесс не радует))) Вот как получается: Из lineEdit получаем строку "2a 2a 2a 2a" из нее делаем QString str, значение которой равно "\x2a\x2a\x2a\x2a" и получаем число элементов size,которое равно соответственно 4. и простите "идиотское" преобразование: Код: char* temp = new char[size]; вот собственно так,если кто то может подсказать аналогичный,но более простой путь,буду признателен)) Код: QString str = "\x2a\x2a\x2a\x2a"; Название: Re: преобразовать QString к BYTE* Отправлено: nikeo от Май 30, 2013, 10:48 Код: QString str = "\x2a\x2a\x2a\x2a"; Не работает;) так как вы написали может и работает,но это не то))) Название: Re: преобразовать QString к BYTE* Отправлено: Авварон от Май 30, 2013, 10:54 Что именно не работает? Я как бы не проверял вообще.
Название: Re: преобразовать QString к BYTE* Отправлено: nikeo от Май 30, 2013, 11:03 возвращает опять бред,не то,тем более,когда так записываешь,она сразу же преобразуется в "****", а у меня значение самой переменной "\x2a\x2a\x2a\x2a"
|