UDP接收数据的问题

a1234567750 2009-11-18 10:40:47
我是采用基本的 发送请求---阻塞---等待应答。

我的问题是我收到的数据有问题,而抓包看到的数据是正确的。

我接收数据
char recvBuf[43];
ZeroMemory(recvBuf,43);
i = recv(sockClient,recvBuf,sizeof(recvBuf),0);

我检测应答的对应字节,来判断应答是否正确,然而我发现有一个字节是这样的,ffffff8A,这个字节应该是8a,然后我

trace("%2x",recvBuf[37])的时候打印出来的却是ffffff8A,其他字节都对,就这个字节不对,前边多了ffffff

char型怎么可能装下这么大的数字??这是怎么回事,我以两位打印,怎么会打出8位?

郁闷中。。。请大家帮帮我
...全文
109 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
a1234567750 2009-11-19
  • 打赏
  • 举报
回复
能否说一下 为什么打印出的为什么是ffffff8A,即使是负数,它也应该是8A啊,只不过第一位是符号位吗,
stjay 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 a1234567750 的回复:]
什么意思啊  char数组默认的元素是有符号的?
[/Quote]

char型是有符号的

char recvBuf[43];
trace("%2x",recvBuf[37])相当于

int n = recvBuf[37];
trace("%2x", n);
a1234567750 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wwwllg 的回复:]
char c = recvbuff[37];

trace("%2x",c);

[/Quote]

什么意思啊 char数组默认的元素是有符号的?
Ryanwen 2009-11-18
  • 打赏
  • 举报
回复
因为8a(10进制138)已经超过了char型取值的上限

定义为unsigned char就不会有这个问题

unsigned char c = recvbuff[37];

trace("%2x",c);
UDX协议 2009-11-18
  • 打赏
  • 举报
回复
char c = recvbuff[37];

trace("%2x",c);
hhwei1985 2009-11-18
  • 打赏
  • 举报
回复
up
a1234567750 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 stjay 的回复:]
引用 3 楼 a1234567750 的回复:
什么意思啊  char数组默认的元素是有符号的?


char型是有符号的

char recvBuf[43];
trace("%2x",recvBuf[37])相当于

int n = recvBuf[37];
trace("%2x", n);
[/Quote]

嗯,那么char怎么能装下ffffffA8呢,我有跟踪recvBuf[37]数据,确实是里边是ffffffA8,有点不理解,
难道会自动转为整形?????

18,356

社区成员

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

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