社区
通信技术
帖子详情
在网络编程中,为了保证网络字节序,那么double,float类型的该怎么转化?
shimx
2003-12-04 07:34:38
我想 short可以用htons, int可以用 htonl,那么 double和float类型呢?
...全文
640
6
打赏
收藏
在网络编程中,为了保证网络字节序,那么double,float类型的该怎么转化?
我想 short可以用htons, int可以用 htonl,那么 double和float类型呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shimx
2003-12-05
打赏
举报
回复
你的意思是不是就是只要我把 大于 1个字节的结构拷贝到 字节流中,然后接收端也采用同样的方式读取,这样的话就不需要考虑 本机和目标机的字节顺序了吗? 我的理解正确吗?
如果我按照以下的情况去操作,那就必须要考虑主机序,网络序了吧?!
unsigned char data[10];
unsigned long ulData = *(unsigned long*)data;
fierygnu
2003-12-05
打赏
举报
回复
必须考虑字节顺序。楼上几位回答错误。
至于float和double,与CPU无关。一般编译器是按照IEEE标准解释的,即把float/double看作4/8个字符的数组进行解释。因此,只要编译器是支持IEEE浮点标准的,就不需要考虑字节顺序。
pc200300
2003-12-04
打赏
举报
回复
但是假如我的系统主机是LittleEndian,而接收端是Bigendian,虽然是自己开发的系统,但是doulbe这种类型的数据仍然存在 转换的问题,如果我直接读入数据,字节序一定是反的。
:
1从你的问题可以看出,你根本就没有考虑主机字节的存储顺序;
2如果你的通讯双方的CPU的存储顺序相同的话,你完全不用考虑那么多;
int iValue=32;
char buff[4];
memcpy(buff,iValue,4)//32位编程
把buff发到对方做如下处理:
int iValue0;
memcpy(iValue0,buff,4);
类似就可以了
pc200300
2003-12-04
打赏
举报
回复
其实我们关注的主要是主机字节顺序,有的CPU是从底到高存储,有的是从高到底存储,我们只要根据这个原则处理以下就可以了。
shimx
2003-12-04
打赏
举报
回复
但是假如我的系统主机是LittleEndian,而接收端是Bigendian,虽然是自己开发的系统,但是doulbe这种类型的数据仍然存在 转换的问题,如果我直接读入数据,字节序一定是反的。
netsys2
2003-12-04
打赏
举报
回复
这不重要,htons和htonl是因为TCP/IP的一些参数用到int,long,但它们没有float,double的参数。
至于你自己的数据,传输时都是按BYTE类型传输的,对方按照相同格式接收处理就行了
浮点数/
float
/
double
是否需要考虑
网络
字节序
的问题
在
网络
上传输数据时,对整数,我们使用转换为
网络
字节序
的方法,来
保证
跨平台传输数据时不会出现字节顺序问题导致的解析错误,但是对浮点数,是否也需要这样做? 在socket编程
中
,只有针对整型的字节顺序转换函数,例如htonl(),htons()等,浮点数怎么办? 问:为什么在
网络
编程
中
,需要考虑
字节序
的问题时,对于
double
、
float
以及字符串等数据
类型
不需要考虑主机序列和网
double
类型
数据的
网络
字节序
转换
标题关 于C/C++所碰到的一些问题总结** 最近,需要将一套linux开发程序移植到另外一块开发板上,程序
中
涉及到了
网络
通信,且所用开发板的处理器为大端模式,之前为小端模式,因此在数据传输的过程
中
需要考虑到大小端转换的问题。 全新的界面设计 ,将会带来全新的写作体验; 在创作
中
心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增加了 图片拖拽 功能,你可以将...
字节数组和short,int,
float
,
double
等
类型
的相互转换
一、在C++
中
从字节数组
中
获取short,int,long,
float
,
double
等数据 在进行Modbus协议通信和
网络
编程
时,有时需要将从串口或者
网络
中
接收的数据从字节数组转换成对应的int,
float
,
double
等数据,有时还要考虑大小端
字节序
以及Swap的问题,发现在C++
中
需要自己写相关的转换函数,于是/写了一个函数,用于从输入的byte数组
中
获取指定
类型
的数据,目前支持int16,...
网络
传输大端序_大端、小端与
网络
字节序
大端(Big-Endian),小端(Little-Endian)以及
网络
字节序
的概念在编程
中
经常会遇到。
网络
字节序
(Network Byte Order)一般是指大端(Big-Endian,对大部分
网络
传输协议而言)传输,大端小端的概念是面向多字节数据
类型
的存储方式定义的,小端就是低位在前(低位字节存在内存低地址,字节高低顺序和内存高低地址顺序相同),大端就是高位在前,(其
中
“前”是指靠近内存低地...
double
和
float
的区别
1.
double
是双精度浮点数,内存占8个字节,有效数字16位,表示范围是-1.79E+ 308~-1.79E+308。
float
是单精度浮点数,内存占4个字节,有效数字8位,表示范围是 -3.40E+38~3.40E+38。 2.两者处理速度不同,CPU处理
float
的速度比处理
double
快。
double
的精度高,
double
消耗内存是
float
的两倍。 3.如果不声明,小数默认是
double
类型
,用
float
时需要进行强转,或者在小数后加上f。 /** * @author dou_chengzi
通信技术
4,354
社区成员
28,926
社区内容
发帖
与我相关
我的任务
通信技术
通信技术相关讨论
复制链接
扫一扫
分享
社区描述
通信技术相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章