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

[复制链接]
wuhany 发表于 2019-6-16 09:28 | 显示全部楼层

十六进制和浮点数之间的运算有什么问题?
lizye 发表于 2019-6-16 09:31 | 显示全部楼层
寄存器的位数,浮点数,长整数的处理要注意的
wuhany 发表于 2019-6-16 09:34 | 显示全部楼层

楼主也没有说遇到什么问题了
IEEE标准的32位浮点数?
jiahy 发表于 2019-6-16 09:43 | 显示全部楼层

你的代码看一下,转换很难吗
wuhany 发表于 2019-6-16 09:46 | 显示全部楼层
这个可以在21ic下载modbus的程序。
spark周 发表于 2019-6-16 09:49 | 显示全部楼层
是高低位字节序的问题。
zhenykun 发表于 2019-6-16 09:52 | 显示全部楼层

这个是有相关的转换算法的
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
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
lizye 发表于 2019-6-16 10:20 | 显示全部楼层

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

这个都在modbus协议里面有。
 楼主| wyjie 发表于 2019-6-16 10:24 | 显示全部楼层

结贴了,多谢大家讨论这么多哈,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部