我不停地想把一个uint16加到有效载荷的末端,然后放到接收器上,再把它放回c语言中的uint16。
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没有正确通过我做错什么了?
最佳答案
使用:
formatted_data[data_length-2] = cmpId & 0xff;
formatted_data[data_length-1] = cmpId >> 8;
您应该使用:
cmpid = (payload[len-1] << 8) | payload[len-2];
不是:
cmpid = (payload[len-2] << 8) | payload[len-1];
关于c - C:将uint16_t转换为字节以添加到发送方有效负载,然后在接收方再次返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41828856/