ペイロードの最後に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