2014-10-20 1 views
0

Я работаю над проектом, и мне нужно иметь возможность отправлять байтовые массивы через Qpid, но Variant не знает, что такое массив. Есть ли какой-то способ, я могу преобразовать массив байтов в нечто Variant, например, вариант Variant :: list unit8 или строку Variant ::, тогда, когда я получу ответ, я могу преобразовать строку или список обратно в байт []?Qpid Тип варианта для обработки массивов байтов C++

Спасибо,

ответ

1

Я хотел бы использовать qpid::types::Variant::List. Преобразуйте все свои байты (предположим, вы используете unsigned char) до uint8_t, а затем добавьте их в список.

Пример:

unsigned char bytesToSend[] = {104, 101, 108, 108, 111}; /* "hello" */ 
int lengthOfArray = sizeof(bytesToSend)/sizeof(byteToSend[0]); 
qpid::types::Variant::List lstToSend; 
for(int i = 0; i < lengthOfArray; i++){ 
    uint8_t thisByte = (uint8_t)bytesToSend[i]; 
    lstToSend.push_back(qpid::types::Variant(thisByte)); 
} 
qpid::messaging::Message msg; 
qpid::messaging::encode(lstToSend, msg); 
yourSender.send(msg, false); /* change false to true if you want to sync with the broker. */ 

Я не проверял это, но он должен дать общий обзор.

Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать, и я постараюсь ответить им как можно лучше.


Литература:

Смежные вопросы