社区
网络编程
帖子详情
请教关于float, double类型数据传输字节序问题,用IEEE754?
fangcheng
2007-03-14 09:08:11
大家有没有网络传输过浮点数?
怎么处理字节序问题的?
是烦不了直接拷贝主机字节序传输?
还是按照浮点数定义(如IEEE754)处理的?
...全文
1771
18
打赏
收藏
请教关于float, double类型数据传输字节序问题,用IEEE754?
大家有没有网络传输过浮点数? 怎么处理字节序问题的? 是烦不了直接拷贝主机字节序传输? 还是按照浮点数定义(如IEEE754)处理的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
daidodo
2009-09-23
打赏
举报
回复
根据需要的精度,转换成整数,再按照整数的方式传。
shanglihong
2009-09-23
打赏
举报
回复
学习一下
shanglihong
2009-09-23
打赏
举报
回复
学习一下
UltraBejing
2008-04-30
打赏
举报
回复
等待牛人来答.
meiZiNick
2008-04-30
打赏
举报
回复
什么呀
xbt746
2008-03-28
打赏
举报
回复
楼上昵称牛啊
ReverseEngineering
2007-04-25
打赏
举报
回复
学习一下
珍惜生命远离CPP
2007-03-27
打赏
举报
回复
这个,我都是直接传得,还没出现问题。
roger_77
2007-03-27
打赏
举报
回复
mark
Analyst
2007-03-25
打赏
举报
回复
另外浮点数不存在字节序问题
Analyst
2007-03-25
打赏
举报
回复
1
现在的CPU都是遵从IEEE754标准的,浮点数的二进制表示法都是一样的,直接二进制格式传没有问题。
DentistryDoctor
2007-03-24
打赏
举报
回复
将字节顺序及二进制数据一起发送。
chehw
2007-03-24
打赏
举报
回复
发送端在传输之前先发送一个DWORD(0x000000FF),告知自己的字节顺序。(little endian/big endian)
接收端根据自己CPU的字节顺序类型判断是否需对接收的浮点数字节顺序做调整。
可自定义一个协议和处理过程,将字节顺序验证和字节顺序调整等操作封装起来。
abomber2
2007-03-16
打赏
举报
回复
同意二楼的
浮点数 不同cpu的表示 不一样 不是4个字节就可以的
softrain
2007-03-16
打赏
举报
回复
二楼的高明
qxbnit
2007-03-15
打赏
举报
回复
float拆4个byte ,ascii传输
收到后还原
anjuta_c
2007-03-14
打赏
举报
回复
一般不用楼上的方法,因为不同的cpu和不同语言 浮点数的内存表示方法不一样。
同样的内存缓冲区发送到不同的cpu架构上,在解释出来数据很可能都已经乱了。
目前我知道有两种办法
1.把 浮点数当作 字符串来传送
2.采用sun rpc里边的数据打包格式 External Data Representation(Sun's XDR Package)或者
采用corbo标准的Common Data Representation (CDR)
前一个被firebird开源数据库采用,后一个是ACE使用的跨平台数据打包格式
CathySun118
2007-03-14
打赏
举报
回复
我一般使用:
1 memcpy
2 首地址指向
mysql下
float
类型使用一些误差详解
单精度浮点数用4字节(32bit)表示浮点数采用
IEEE
754
标准的计算机浮点数,在内部是用二进制表示的如:7.22用32位二进制是表示不下的。所以就不精确了。mysql中
float
数据类型的
问题
总结 对于单精度浮点数
Float
: 当数据范围在±131072(65536×2)以内的时候,
float
数据精度是正确的,但是超出这个范围的数据就不稳定,没有发现有相关的参数设置建议:将
float
改成double或者decimal,两者的差别是double是浮点计算,decimal是定点计算,会得到更精确的数据。 1.
float
类型
float
列类型默认长度查不到结果,必须指定精度,比如 num f
IEE
754
浮点数转换工具.exe
VB小工具,免费使用,实现
float
数据与四字节数据相互转化以及Double数据与八字节数据相互转化。
c++课程讲义
float
: 4字节,6~7位有效数字, -3.4* 10 ~ 3.4*10 double: 8字节,15~16位有效数字, -1.7*10 ~1.7*10 long double: 同double 参考:
IEEE
754
标准 需注意的
问题
:有效数字,数据溢出
Java入门之7:Java中的
float
和
double类型
的浮点数是怎么按照
IEEE
754
标准存储的?
浮点数是怎么进行存储的? 在各大编程语言中,最长常见的两类浮点数是单精度(Java中用
float
类型表示)和双精度(Java中用 double 类型表示)浮点数,
IEEE
754
对它们的存储格式做了严格的规定! 下面由我来浅谈一下浮点数的存储格式吧: 先看一张图:↓ , 为什么不同类型的整数比较会相等,而不同类型的浮点数比较却不相等呢? 整数都知道,它的存储相对来说比较简单,它们在底层存储的格式是一样的,只是所占用的字节大小不一样而已…… 但为什么
float
和double的浮点数相比较就不行呢?
浮点数/
float
/double 是否需要考虑网络
字节序
的
问题
在网络上传输数据时,对整数,我们使用转换为网络
字节序
的方法,来保证跨平台传输数据时不会出现字节顺序
问题
导致的解析错误,但是对浮点数,是否也需要这样做? 在socket编程中,只有针对整型的字节顺序转换函数,例如htonl(),htons()等,浮点数怎么办? 问:为什么在网络编程中,需要考虑
字节序
的
问题
时,对于double、
float
以及字符串等数据类型不需要考虑主机序列和网
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章