S
sonie
Unregistered / Unconfirmed
GUEST, unregistred user!
其实这也许不是一个delphi的问题,但与系统相关
本人在C++Builder中定义一个这样的类。
class CTransferData{
public:
WORD Transfer;
BYTE DataType; //数据类型
BYTE Command; //命令
DWORD DataLen; //数据长度;
BYTE* DataBuffer; //数据
};
但是由于需要(网络传输)要转化发BYTE*
我用memcpy来实现 ,比如
CTransferData *tr;
BYTE *bData;
在发送端
bData=new BYTE[sizeof(WORD)+2*sizeof(BYTE)+sizeof(DWORD)+DataLen*sizeof(BYTE)];
memcpy(bData,tr,sizeof(WORD)+2*sizeof(BYTE)+sizeof(DWORD));
memcpy(bData,tr->DataBuffer,tr->DataLen);
SendData(bData,sizeof(WORD)+2*sizeof(BYTE)+sizeof(DWORD)+DataLen*sizeof(BYTE));
而在接收端,假设收到了,放在bData中了
我用
memcpy(tr,bData,sizeof(WORD)+2*sizeof(BYTE)+sizeof(DWORD));
tr->DataBuffer=new[tr->DataLen];
memcpy(tr->DataBuffer,bData,tr->DataLen);
但是这样的实现有问题
在BYTE和WORD对齐方式下是正确的
在DWORD和QUARD WORD对齐方式下就不行了,而要命的是我的程序还要跑在VC下
有人能帮我提个实现或者能否告诉我VC下怎么把对齐方式设为BYTE或WORD,它缺省好象是QUARD WORD
本人在C++Builder中定义一个这样的类。
class CTransferData{
public:
WORD Transfer;
BYTE DataType; //数据类型
BYTE Command; //命令
DWORD DataLen; //数据长度;
BYTE* DataBuffer; //数据
};
但是由于需要(网络传输)要转化发BYTE*
我用memcpy来实现 ,比如
CTransferData *tr;
BYTE *bData;
在发送端
bData=new BYTE[sizeof(WORD)+2*sizeof(BYTE)+sizeof(DWORD)+DataLen*sizeof(BYTE)];
memcpy(bData,tr,sizeof(WORD)+2*sizeof(BYTE)+sizeof(DWORD));
memcpy(bData,tr->DataBuffer,tr->DataLen);
SendData(bData,sizeof(WORD)+2*sizeof(BYTE)+sizeof(DWORD)+DataLen*sizeof(BYTE));
而在接收端,假设收到了,放在bData中了
我用
memcpy(tr,bData,sizeof(WORD)+2*sizeof(BYTE)+sizeof(DWORD));
tr->DataBuffer=new[tr->DataLen];
memcpy(tr->DataBuffer,bData,tr->DataLen);
但是这样的实现有问题
在BYTE和WORD对齐方式下是正确的
在DWORD和QUARD WORD对齐方式下就不行了,而要命的是我的程序还要跑在VC下
有人能帮我提个实现或者能否告诉我VC下怎么把对齐方式设为BYTE或WORD,它缺省好象是QUARD WORD