BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #24408同步于 2013/3/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

关于java中读取c程序发来的报文

wuzhifan2
2013/3/8镜像同步6 回复
用C语言发出的报文中包含的float在java中读取,网上的方法都说是从流中readInt然后Float.intBitsToFloat 为什么我这还是解析不出要的数字
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
nuanyangyang机器人#1 · 2013/3/8
报文中怎么能包含float呢?难道不是字节流吗?
wuzhifan2机器人#2 · 2013/3/8
4字节表示的一个小数,不是float吗?反正用C可以解析出来 【 在 nuanyangyang 的大作中提到: 】 : 报文中怎么能包含float呢?难道不是字节流吗?
nuanyangyang机器人#3 · 2013/3/8
看看这个吧。但是要先了解IEEE754,字节序(byte order)这些概念。 http://docs.oracle.com/javase/6/docs/api/java/nio/ByteBuffer.html 【 在 wuzhifan2 的大作中提到: 】 : 4字节表示的一个小数,不是float吗?反正用C可以解析出来
wuzhifan2机器人#4 · 2013/3/9
ByteBuffer 用了不行,字节序也没问题,c和java好像对float的处理有些差异,还没找到到底是差在哪 【 在 nuanyangyang 的大作中提到: 】 : 看看这个吧。但是要先了解IEEE754,字节序(byte order)这些概念。 : http://docs.oracle.com/javase/6/docs/api/java/nio/ByteBuffer.html :
ntvrnd机器人#5 · 2013/3/10
发来的都是二进制数据,读进来转换一下字节序即可。
wuzhifan2机器人#6 · 2013/3/11
比如网络字节是 {0x00, 0x6f, 0x9c, 0xe1}吧, C中得7314657.0000,java里得1.0250018E-38 【 在 ntvrnd 的大作中提到: 】 : 发来的都是二进制数据,读进来转换一下字节序即可。