64,281
社区成员
发帖
与我相关
我的任务
分享
ts t;
int len = sizeof(ts);
unsigned char * data = new unsigned char[len];
memcpy(data,&t,len);
typedef struct request
{
private:
unsigned short crc;
public:
unsigned int msg;
unsigned char* data;
unsigned int len;
request() {}
~request()
{
if (data)
{
delete[]data;
}
}
template<typename T> void pack(T& req)
{
len = sizeof(T);
unsigned int _crclen = len / sizeof(unsigned short);
data = new unsigned char[len];
data[0] = 0;
memcpy(data, &req, len);
crc = 0;
auto ptmp = (unsigned short*)&req;
for (int i = 0; i < _crclen; i++)
{
crc += ptmp[i];
}
}
template<typename T> bool crc_check(T& req)
{
//memcpy(data, &req, sizeof(T));
unsigned int lengch = sizeof(T);
auto _crclen = lengch / sizeof(unsigned short);
unsigned short _crc = 0;
auto ptmp = (unsigned short*)&req;
for (int i = 0; i < _crclen; i++)
{
_crc += ptmp[i];
}
return crc == _crc;
}
}REQ;