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.

Reply via email to