페이로드 끝 부분에 uint16을 추가 한 다음 수신기에서 uint16을 다시 가져 와서 c에서 uint16으로 다시 가져 오는 작업을 계속합니다.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