C++ (Qt)QString lines;lines = sentText->toPlainText();QStringList numbers = lines.split(QRegExp("[, \n\r]+")); lines = numbers[0+readlnum] + numbers[1+readlnum] + numbers[2+readlnum] + numbers[3+readlnum] + numbers[4+readlnum];QByteArray datagramm;QByteArray datagramm = lines.toStdString().c_str();TxudpSocket->writeDatagram(datagramm.data(), datagramm.size(),QHostAddress::LocalHost, TxPort.toInt());
Естественно данные по UDP пересылаются в ASCII.
lines = numbers[0+readlnum] + numbers[1+readlnum] + numbers[2+readlnum] + numbers[3+readlnum] + numbers[4+readlnum];
Xотелось бы как-то преобразовать те 5 байт из строки, которые я выделяю в char и передать их по UDP уже в виде char-ов, а не в виде ASCII.
C++ (Qt)QStringList numbers = sentText->toPlainText().split(QRegExp("[, \n\r]+"));QByteArray datagramm;foreach (QString number, numbers) datagramm += number.toUShort(0, 16); // тут еще можно проверочку на успешное преобразование строки в число
C++ (Qt)QStringList numbers = sentText->toPlainText().split(QRegExp("[, \n\r]+"));QByteArray datagramm;const int estimatedLength = 5;bool ok;quint8 num;foreach (QString number, numbers){ num = number.toUShort(&ok, 16); if (ok) { datagramm += num; } else { //! Ругаемся если не число - в данном случае в консоль приложения, по желанию можно показывать QMessageBox::warning qWarning( ( number + " is not a valid number" ).toAscii().data() ); } //! Проверяем длину датаграммы if ( datagramm.size() < estimatedLength ) { qWarning( "Too short datagramm" ); } //! Добиваем нулями, если байтов не хватает while ( datagramm.size() < estimatedLength ) { datagramm.append( '\0' ); } if ( datagramm.size() > estimatedLength ) { qWarning( "Too long datagramm" ); datagramm.resize( estimatedLength ); }}