求助~~懂通讯协议的来看看! 现有一个数据结构如下:struct cmd{ char a; long b; int c; ... ... ...};如何将这个结构的成员值赋值给一个字符串Str,由于成员项太多,所以不能单独一个一个赋值. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先给字符串Str分配对应结构大小的空间,然后做内存拷贝 char * chData;int nLen = sizeof(cmd);chData = new char[nLen+1];strcpy(chData,(char *)&cmd);chData[nLen] = '\0';CString strData = chData; 我看还是选把struct内容转成HEX字符串的好,要不然当中有个值是0,你这个字不就不对了吗?char buf[sizeof(struct)*2+1] = { 0 };BYTE * datap = (BYTE*)&cmd;char[3] ch= { 0 };for( int i = 0; i < sizeof(cmd); i++ ){ wsprintf(ch,"%2.2x", *(datap+i)); buf[i*2+0] = ch[0]; buf[i*2+1] = ch[1];}buf[sizeof(cmd)*2] = 0; 楼上的 请问 char[3]ch={0}是什么意思啊? CEGUI 与DirectX 如何结合? 郁闷啊,Format函数卡到了 CArray 类中 Serialize()存储问题 如何为视频添加滚动的文字(字幕)? 关于鼠标移动到任务栏上某个窗口后发送的消息 大家给看看这个问题有没有更快的算法!! 关于snmp trap问题? 初学者请教语法 关于编码的问题,真是有点晕 调用API ExitWindowExt(EWX_POWEROFF,0)为何关不了机器? 一个unresolved external的问题 解决上传过程当中由于中途网络中断,使服务器端文件的内容因改动而不能使用
int nLen = sizeof(cmd);
chData = new char[nLen+1];
strcpy(chData,(char *)&cmd);
chData[nLen] = '\0';
CString strData = chData;
char buf[sizeof(struct)*2+1] = { 0 };
BYTE * datap = (BYTE*)&cmd;char[3] ch= { 0 };
for( int i = 0; i < sizeof(cmd); i++ )
{ wsprintf(ch,"%2.2x", *(datap+i));
buf[i*2+0] = ch[0]; buf[i*2+1] = ch[1];
}
buf[sizeof(cmd)*2] = 0;