C中socket传输时int,long.float类型要怎么处理?需要转成网络字节顺序么?怎么转?

 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
xtwgigu2
2014-10-10 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:54
采纳率:0%
帮助的人:76.8万
展开全部
  1. 要。只要类型长度超过1字节的,都要转换网络字节序。

  2. socket api,这些很容易搜索到的,htonl,htos,用法还是自己找吧,自己找的,才会印象深刻

追问
嗯嗯,谢谢啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
树大没风
推荐于2017-12-16 · TA获得超过316个赞
知道小有建树答主
回答量:200
采纳率:100%
帮助的人:105万
展开全部
小端法(Little-Endian)就是低位字节排放在内存的低地址端(即该值的起始地址),高位字节排放在内存的高地址端;
大端法(Big-Endian)就是高位字节排放在内存的低地址端(即该值的起始地址),低位字节排放在内存的高地址端;
网络字节序是大端字节序,平常的PC机器上是小端字节序
需要转换下,可以用htons()函数做转换 将主机字节序转换为网络上用的字节序
int 和 long 都可以用htons()函数做转换
float型的一般来说,编译器是按照IEEE标准解释的,即把float/double看作4/8个字符的数组进行解释。因此,只要编译器是支持IEEE浮点标准的,就不需要考虑字节顺序。
如果你实在不放心,可以采取下面两种办法:
(1)在保证不超过int范围的情况下,将浮点数乘以100(或1000,10000,视所需精度随你定)转换为整数传输,在接收端再除以100,得到浮点数。
(2)将浮点数转换为字符串传输,由于字符串是一个字节一个字节的流,就不会有字节顺序的问题了。

希望有帮到你。
追问
htohl转换吧???转换之后数据丢失或出错了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式