What's the return value of ParseFromString()? I would guess that it might be returning false because of a problem with the serialized data.
On Mon, Nov 18, 2019 at 12:34 PM Bowfish <[email protected]> wrote: > > void ArcaDbSetRequest::on_responseSuccessful(const QByteArray length, > const QByteArray message) > { > Q_UNUSED(length) > > // Create a new CryptoResponse > arca_db::DatabaseSetResponse *m_arcaDatabaseSetResponse = new arca_db > ::DatabaseSetResponse(); > // Parse the message and convert it to a std::string > m_arcaDatabaseSetResponse->ParseFromString(message.toStdString()); > // Extract the header of the response > arca_firmware::FirmwareMessageHeader header = > m_arcaDatabaseSetResponse->header(); > > qDebug() << "header {"; > qDebug() << "\tversion : " << header.version(); > qDebug() << "\tservice : " << header.service(); > qDebug() << "\tpeer_id : " << header.peer_id(); > qDebug() << "\tresponse: " << header.response(); > qDebug() << "\terror : " << QString::fromStdString(header.error()); > qDebug() << "}"; > } > > > Am Montag, 18. November 2019 20:57:28 UTC+1 schrieb Bowfish: > >> I want to parse a string with the c++ ParseFromString function. The >> string contains \x00. It seems that this function cuts the string at \x00. >> Is this possible? >> >> Here is some debug output which I used to investigate this: >> >> // This is before ParseFromString >> >> response message: >> "\n\x0F\b\x01\x10\x04\x19\x8D\xD2z\xBF\x00\x00\x00\x00(\x01\x10\x02\x1AX0V0\x10\x06\x07*\x86H\xCE=\x02\x01\x06\x05+\x81\x04\x00\n\x03""B\x00\x04\x87W\xBBw\xF3\xE8\xAD\xA8y\n\x9E\xA0\xC5\xF0.\xFD""e>L\xD1k\xE6\x80\xCBZ\xD2\x8E\x89?\xD6#\xFF(\xAF#J\x12\xB5\x17""db\xD8\xDCY?\x8B\x98\xFE\x15NL\x9B;\x8A\xE3\xC0\xF1\xC4\xA5;\x07\x86\xE6\xD5" >> response length : "6d000000" >> response length : 109 >> response message: >> "\n\u000F\b\u0001\u0010\u0004\u0019��z�\u0000\u0000\u0000\u0000(\u0001\u0010\u0002\u001AX0V0\u0010\u0006\u0007*�H�=\u0002\u0001\u0006\u0005+�\u0004\u0000\n\u0003B\u0000\u0004�W�w�譨y\n����.�e>L�k���ZҎ�?�#�(�#J\u0012�\u0017db��Y?���\u0015NL�;����ĥ;\u0007���" >> >> >> >> // This is after I call the function from the protobuf Object which >> should extract the public key >> // But the public key should be much longer. It shows only the part which >> is before \x00 >> 0V0*�H�=+� >> public key raw: "0V0\x10\x06\x07*\x86H\xCE=\x02\x01\x06\x05+\x81\x04" >> 0V0*�H�=+� >> public key raw: "0V0\x10\x06\x07*\x86H\xCE=\x02\x01\x06\x05+\x81\x04" >> public key hex: "3056301006072a8648ce3d020106052b8104" >> >> Thanks for your help >> > -- > You received this message because you are subscribed to the Google Groups > "Protocol Buffers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/protobuf/6a50962e-9902-496a-b23c-7094820926da%40googlegroups.com > <https://groups.google.com/d/msgid/protobuf/6a50962e-9902-496a-b23c-7094820926da%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/protobuf/CADqAXr5A8fEv-1Sa-izr_TjoP5dSi7w70931Nv_EDzMNwRdU8A%40mail.gmail.com.
