Я продолжаю сбрасывать информацию о добавлении uint16 в конец полезной нагрузки, а затем в приемник, возвращая его обратно в uint16 в c.C: uint16_t к байтам для добавления в полезную нагрузку отправителя и обратно в приемнике
uint16 - cmpId. Отправитель делает это:
const UInt8* data = getArray(byteArray);
data_length = getLenArray(byteArray)
data_length = data_length + 2;
UInt8 formatted_data[data_length];
//serialize cmpid
formatted_data[data_length-2] = cmpId & 0xff;
formatted_data[data_length-1] = cmpId >> 8;
и приемник делает это:
UInt8 len = (UInt8) ((smip_receive_t *) data)->payloadLen;
UInt8 * payload = (UInt8 *) ((smip_receive_t *) data)->payload;
UInt16 cmpid;
cmpid = (payload[len-2] << 8) | payload[len-1];
Но cmpId не приходит через правильно. Что я делаю не так?
Примечание: Не используйте доморощенного названия для типов фиксированного размера. В вашем названии указан стандартный тип, но ваш код использует неизвестные имена. – Olaf