急!!!谁知道怎么把long类型存入BYTE数组中?100分相送!

kingeboy 2005-05-06 12:01:01
现在做一个DirectPlay程序,服务器端和客户端之间发送数据使用的包是Byte的,当我想把long类型放入数组中发送,但是不知道怎么存进去,直接赋值可以通过但是在数组里面的值就不对了,请DX们看看改怎么搞!
BYTE SendBuffer[8]={'\0'};
long lDate=1000;
DPN_BUFFER_DESC dpnBuffer;
SendBuffer[0]=MsgID;
SendBuffer[4]=lDate;;//此处赋过去SendBuffer[4]后的值是='\xFFFFFFE8' 232 (0xFFFFFFE8),跟1000不相等啊?
dpnBuffer.dwBufferSize=sizeof(SendBuffer);
dpnBuffer.pBufferData=SendBuffer;
m_pDPServer->SendTo(DPNID_ALL_PLAYERS_GROUP,&dpnBuffer,1,0,NULL,&hCancelHandle,DPNSEND_SYNC|DPNSEND_NOLOOPBACK);
...全文
132 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingeboy 2005-05-06
  • 打赏
  • 举报
回复
当我的值有这么大2013100088,可能是超过8位的,但只要存在4个位中怎么办啊?
例如:
_b[0]=_l 第一部分
_b[1]=_l 中间
_b[2]=_l 中间部分
_b[3]=_l 最后部分
peter2108 2005-05-06
  • 打赏
  • 举报
回复
在你的例子中:
SendBuffer[4]=(lDate & 0x000000FF);
SendBuffer[5]=(lDate & 0x0000FF00)>>8;
SendBuffer[6]=(lDate & 0x00FF0000)>>16;
SendBuffer[7]=(lDate & 0xFF000000)>>24;

peter2108 2005-05-06
  • 打赏
  • 举报
回复
改正:
BYTE _b[16];
long _l=0x12345678;

_b[0]=_l & 0x000000FF;//得到0x78
_b[1]=(_l & 0x0000FF00)>>8;//得到0x56
_b[2]=(_l & 0x00FF0000)>>16;//得到0x34
_b[3]=(_l & 0xFF000000)>>24;//得到0x12

字节数组的下标随便你自己定义
通过了记得给分
peter2108 2005-05-06
  • 打赏
  • 举报
回复
BYTE _b[16];
long _l=0x123456;

_b[0]=_l & 0x000000FF;//得到0x56
_b[1]=(_l & 0x0000FF00)>>8;//得到0x56
_b[2]=(_l & 0x00FF0000)>>16;//得到0x34
_b[3]=(_l & 0xFF000000)>>24;//得到0x12

字节数组的下标随便你自己定义
通过了记得给分
peter2108 2005-05-06
  • 打赏
  • 举报
回复
2013100088=0x77FD7838,怎么超过8位?
kingeboy 2005-05-06
  • 打赏
  • 举报
回复
自己搞了一下,这样子也行不过转成BYTE后,数据在数组中的位置会变化,sd[4]会后移到dpnBuffer.pBufferData[16]的位置
int sd[8]={'\0'};
DPN_BUFFER_DESC dpnBuffer;
sd[0]=MsgID;
sd[4]=lData;
dpnBuffer.dwBufferSize=sizeof(sd);
dpnBuffer.pBufferData=(LPBYTE)sd;

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧