贴码:
void compare(CONF_R_3_4_DATA_MSG_t* pData,data_crc9_t* data_crc9_1)
{
...
pData->pdu.crc9_hi = 0&0x100;//reset crc9_hi for new crc9
memcpy(data_crc9,&pData->pdu,1);
memcpy(data_crc9+1,&pData->pdu.userdata,strlen(pData->pdu.userdata));
//比较data_crc9内容与data_crc9_1内容是否一致
ret = memcmp(data_crc9,data_crc9_1,strlen(pData->pdu.userdata)+1);
}
void muti_frag()
{
...
((CONF_R_3_4_DATA_MSG_t*)pData)->pdu.crc9_hi = 0&0x100;
((CONF_R_3_4_DATA_MSG_t*)pData)->pdu.dbsn = i&0x7f;
memcpy(data_crc9,&((CONF_R_3_4_DATA_MSG_t*)pData)->pdu,1);
memcpy(data_crc9+1,((CONF_R_3_4_DATA_MSG_t*)pData)->pdu.userdata,block_size);
...
result[i] = compare_crc( pData,data_crc9);
...
}
我的疑惑:两个函数中dbsn、crc9_hi、userdata经打印出来,结果一致,用memcmp比较时,比较一个字节(即dbsn和crc9_hi)内容一致,只比较userdata内容也一致,但是比较整体的data_crc9时,内容不等,所以觉得很奇怪。