把int放在char[]中,用socket发送!

cococut 2011-12-16 09:29:42
int itmp=1321;
char buf[4];
怎么序列化在buf中,高位在前,低位在后,
用socket发送出去,

socket接收后,怎么分析出int来,
谢谢!
...全文
101 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cococut 2011-12-16
  • 打赏
  • 举报
回复
哦,我知道啦,谢谢mscf
cococut 2011-12-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 mscf 的回复:]

用这组函数相互转换,htons(), ntohl(), ntohs(),htons(),具体的用法查套接字编程相关的函数文档,htonx类是将主机字序转成网络字序,ntohx类函数是将网络字序转成主机字序,写入前转换,读出后转换~
[/Quote]

我是问收到char buf[4] 个字符后,怎么转成int类型, 然后再调用ntohl做高低位转换,
int itmp;
itmp=*((int*)buf);是这样吗?
薛定谔之死猫 2011-12-16
  • 打赏
  • 举报
回复
用这组函数相互转换,htons(), ntohl(), ntohs(),htons(),具体的用法查套接字编程相关的函数文档,htonx类是将主机字序转成网络字序,ntohx类函数是将网络字序转成主机字序,写入前转换,读出后转换~
cococut 2011-12-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mscf 的回复:]

调用htons函数,将转换结果写入buf
C/C++ code
int itmp = 1321;
unsigned short i = htons(itmp);
memcpy(buf,&i,sizeof(i));
[/Quote]
怎么解析出来?
cococut 2011-12-16
  • 打赏
  • 举报
回复
这已经是高地位转换了吗?
薛定谔之死猫 2011-12-16
  • 打赏
  • 举报
回复
调用htons函数,将转换结果写入buf
int itmp = 1321;
unsigned short i = htons(itmp);
memcpy(buf,&i,sizeof(i));
dongjiawei316 2011-12-16
  • 打赏
  • 举报
回复
写错了

sscanf(buf,"%d",&itmp);



dongjiawei316 2011-12-16
  • 打赏
  • 举报
回复
使用sprintf和sscanf两个函数。

sprintf(buf,"%d",itmp);
sscanf(buf,"%d",itmp);



不过你的buf四个字节长度是不够的。

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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