发新帖我要提问
12
返回列表
打印
[MCU]

十六进制和浮点数之间的运算

[复制链接]
楼主: wyjie
手机看帖
扫描二维码
随时随地手机跟帖
21
wuhany| | 2019-6-16 09:28 | 只看该作者 回帖奖励 |倒序浏览

十六进制和浮点数之间的运算有什么问题?

使用特权

评论回复
22
lizye| | 2019-6-16 09:31 | 只看该作者
寄存器的位数,浮点数,长整数的处理要注意的

使用特权

评论回复
23
wuhany| | 2019-6-16 09:34 | 只看该作者

楼主也没有说遇到什么问题了
IEEE标准的32位浮点数?

使用特权

评论回复
24
jiahy| | 2019-6-16 09:43 | 只看该作者

你的代码看一下,转换很难吗

使用特权

评论回复
25
wuhany| | 2019-6-16 09:46 | 只看该作者
这个可以在21ic下载modbus的程序。

使用特权

评论回复
26
spark周| | 2019-6-16 09:49 | 只看该作者
是高低位字节序的问题。

使用特权

评论回复
27
zhenykun| | 2019-6-16 09:52 | 只看该作者

这个是有相关的转换算法的

使用特权

评论回复
28
zhaoxqi| | 2019-6-16 09:55 | 只看该作者
将40800000转换为10进制数,方法如下:

Modbus浮点数转换示例
Modbus浮点数转换示例
先将16进制数转成二进制数01000000100000000000000000000000
1位符号位(SIGN)=0
8位指数位(EXPONENT)=10000001=129[10进制]
23位尾数位(MANTISSA)=00000000000000000000000
1.尾数=1 .00000000000000000000000=1.0000000[10进制]
套入公式得SGL=(-1)^0*1.0000000*2^(129-127)=4

使用特权

评论回复
29
jiahy| | 2019-6-16 10:16 | 只看该作者
VB转换方法:

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) ‘定义

Dim A(3) As Byte
Dim d As Single
A(0)=&H00
A(1)=&H00
A(2)=&H80
A(3)=&H40
CopyMemory d, A(0), 4
' 结果d=4

使用特权

评论回复
30
lizye| | 2019-6-16 10:20 | 只看该作者

遇到什么问题?不能转换?

这个都在modbus协议里面有。

使用特权

评论回复
31
wyjie|  楼主 | 2019-6-16 10:24 | 只看该作者

结贴了,多谢大家讨论这么多哈,呵呵

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则