Декодировать буфер протокола из необработанных байтов в C ++ - PullRequest
0 голосов
/ 13 октября 2018

Мне нужно работать с входным буфером протокола в моей функции c ++, которая находится в необработанной форме байтов.В руководствах https://developers.google.com/protocol-buffers/docs/cpptutorial упоминается только сериализация и анализ данных в / из файлов.Это не мой случай использования.

Как я могу декодировать буфер протокола из необработанных байтов?У меня есть только указатель на данные и размер для работы.Желательно, чтобы данные не копировались.

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

, кажется, теперь работает, если я делаю это следующим образом:

    uint8* buffer = (uint8*) theBytesPnt;

    CodedInputStream* codedStream = new CodedInputStream(buffer, nBytes );
    EquityPredParams* message = new myGeneratedProtoClass();

    bool_success = message->ParseFromCodedStream(codedStream);

    magicallyObtainedNum = message->people(1).id();

, где класс людей определен в файле .proto, как в учебнике Google.

0 голосов
/ 13 октября 2018

Google protobufs имеет тип bytes, который вы можете использовать.Если в вашем случае вам нужно , чтобы преобразовать его в другой скалярный тип, вам придется сделать это перед отправкой его в protobuffs, поскольку библиотека делает некоторые вещи за сценой, чтобы убедиться, что она находится в правильном порядке.в пункте назначения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...