// 自定义的数据结构
typedef struct tagHostOUTSend
{
BYTE bHead;
BYTE bFlag;
DWORD dwTag;
WORD wTotalPack;
WORD wCurrentPack;
WORD wLength;
BYTE Data[48];
}HOSTOUTSEND, *PHOSTOUTSEND;// 定义
PHOSTOUTSEND pSendPack = new HOSTOUTSEND;
BYTE SendBuffer[USBPack];// 这里有问题
ZeroMemory(SendBuffer, USBPack);
memcpy(SendBuffer, pSendPack, USBPack);我调试运行的时候,看到bHead和bFlag在SendBuffer中占了4个字节(各占2个),dwTag从第5个字节开始.我程序通过USB发送数据包,用Bus Hound看到的结果也是如此.这是为什么?BYTE不是unsigned char吗?而且用sizeof(HOSTOUTSEND) = 64,这是又是为什么?数据结构数据sizeof
解决方案 »
- COM中调用STL的map.erase()出错??
- 结果集为空 pRst->EndOfFile 异常
- Combo Box 的消息响应问题
- 请问怎样实现向treectrl插入一个节点后,立即可以让用户编辑其文本呢
- 金山词霸的问题
- 我将一个ico文件用CFile写入一个dat文件,如何将写入的数据读出并转化为HICON呢?
- ODBC API和ODBC MFC哪个效率高?在实际操作中这个效率的影响可以忽略吗?
- VC++的高手们:能介绍几个适合初学者的网址或书籍吗?
- 请问哪位高手从事过开发LED灯光编辑软件?
- 怎么修改对话框的窗口类型?
- windows剪切板中的format格式
- pdflib 8.0输出中文乱码...
四字节对齐吧。
前两个BYTE放在一个DWORD里,然后是一个单独的DWORD,接着两个WORD组成一个DWORD,然后一个单独的WORD占据一个DWORD,最后是48个BYTE,总共是48+4*4 = 64
那这会对我的发送有影响吗?
我通过USB发送后,接收方可以直接用我的数据结构吗?
Recv(RecvBuffer, USBPack);
memcpy(pSendPack, RecvBuffer, USBPack);
这样可以吗?
那这会对我的发送有影响吗?
我通过USB发送后,接收方可以直接用我的数据结构吗?
Recv(RecvBuffer, USBPack);
memcpy(pSendPack, RecvBuffer, USBPack);
这样可以吗?
统一编译器下,两边都是你写就不会有问题,不然就照我说的字节对齐
typedef struct tagHostOUTSend
{
BYTE bHead;
BYTE bFlag;
WORD wLength;
DWORD dwTag;
WORD wTotalPack;
WORD wCurrentPack;
BYTE Data[48];
}HOSTOUTSEND, *PHOSTOUTSEND;
那这样是不是避免这个?