float数据格式转换

johndiyang 2006-05-25 09:59:55
从网络上接收的TCP包中FLOAT 数值怎么转换成本地的格式?
即float数据从网络字节转换成主机字节,linux c环境,接收的是java数据包
ntohl()和ntohs()都会出错。
曾经拿18.1测试
float f=18.1;
float ff=htonl(f);
float fff=ntohl(ff)
f和fff差别很大
...全文
338 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
johndiyang 2006-05-28
  • 打赏
  • 举报
回复
此问题已经解决,
谢谢各位朋友的帮助
解决方案如下:
http://community.csdn.net/Expert/topic/4780/4780723.xml?temp=5.382717E-03
johndiyang 2006-05-27
  • 打赏
  • 举报
回复
如果都是C程序,应该是对的。
但是我的客户端程序是用JAVA做的,有没有权限去改动。
上边的做法也没有得到正确的数据,相关信息如下

http://community.csdn.net/Expert/topic/4783/4783164.xml?temp=.5102045
sunshinesky13 2006-05-26
  • 打赏
  • 举报
回复
网络传输的过程中当真有float这种概念吗?
我想你可以这样试试/
服务器:
char szBuf[4];
float fYourNum = 4.5;
strcpy(szBuf,&fYourNum,4);
send(socket,szBuf,4);

客户:
char szBuf[4];
receive(socket,szBuf,4);
float* pYourNum = szBuf;
float fYourNum = *pYourNum;

这样应该可以吧,至于直接转换成float的函数,或者宏,我想没有,在主机上可以认识float类型,可是网络上是没有听过float类型的,但是有整形,ip地址,端口号,序列号都是整数类型,这样才使整形在存储上有不同的表达方式,可是网络似乎没有float类型,当然就没有float表示的格式了,那就不能转换喽
不知道我的理解对不对,错误之处请指正
sunshinesky13 2006-05-26
  • 打赏
  • 举报
回复
我也不清楚,我想在传输float类型数据前也要吧它转换成网络格式吗?
johndiyang 2006-05-26
  • 打赏
  • 举报
回复
有两个相关的函数ntohl,ntohs
用来转换整型没有问题,

float类型怎么转换?
sunshinesky13 2006-05-26
  • 打赏
  • 举报
回复
htonl(),ntohl()是转换成float,还是long int?

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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