好好的数怎么就变了,在线急等

jczff 2007-05-09 10:41:18
int datalength;
BYTE* bp = (BYTE*)(&dataLength) + sizeof(dataLength) - cbLeftToReceive;
cbBytesRet = sockClient.Receive( bp, cbLeftToReceive - simulate );
datalength 本来为-858993460
执行后为-859045888
怎么突然变了
急等
不明白,谢谢
...全文
186 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jczff 2007-05-09
  • 打赏
  • 举报
回复
恩 谢谢了
tufaqing 2007-05-09
  • 打赏
  • 举报
回复
呵呵,我只能说原理,程序是你的,干什么用的你最清楚,我是不知道的。
jczff 2007-05-09
  • 打赏
  • 举报
回复
谢谢tufaqing()
我想问一下这datalength里面到底是什么数啊 有什么意义吗
jczff 2007-05-09
  • 打赏
  • 举报
回复
谢谢tufaqing()
tufaqing 2007-05-09
  • 打赏
  • 举报
回复
说反了,dataLength = ntohl( dataLength );是将dataLength的网络字节变成内存字节顺序
tufaqing 2007-05-09
  • 打赏
  • 举报
回复
DOWRD的内存是这样分布的:低字低字节,低字高字节,高字低字节,高字高字节,那样写可能和网络字节的传送有关,dataLength = ntohl( dataLength );是将dataLength变成网络字节传送顺序。网络传送字节序和计算机内存表示的正好相反。
jczff 2007-05-09
  • 打赏
  • 举报
回复
dataLength = ntohl( dataLength );
后边这样用
想问一下这样有什么意义
我是菜鸟 希望不要介意
jczff 2007-05-09
  • 打赏
  • 举报
回复
呵呵 谢谢 我知道为什么变了
但我想问一下这样变有什么意义
tufaqing 2007-05-09
  • 打赏
  • 举报
回复
楼主指针还有的学的,c, c++最重要的就是指针了。学指针一定要看内存。
jczff 2007-05-09
  • 打赏
  • 举报
回复
simulate等于2
jczff 2007-05-09
  • 打赏
  • 举报
回复
回syy64(太平洋) cbLeftToReceive等于4
jczff 2007-05-09
  • 打赏
  • 举报
回复
谢谢tufaqing()
不过我还是不明白
虽然bp变了
但是是datalength给bp bp变了datalength不应该变的啊 谢谢
syy64 2007-05-09
  • 打赏
  • 举报
回复
cbLeftToReceive是否可能大于4?
tufaqing 2007-05-09
  • 打赏
  • 举报
回复
bp指针指向了datalength4个字节之间,用receive修改了当然会变

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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