硬汉嵌入式论坛

 找回密码
 立即注册
查看: 742|回复: 1
收起左侧

[Lua] LUA版通过位操作实现整数转浮点数,方便读取目标板RAM空间的4字节数据转浮点型

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
发表于 2022-8-11 01:23:27 | 显示全部楼层 |阅读模式

函数实现:
[Lua] 纯文本查看 复制代码
function float_i2f(bits)
    local sign 
    local exponent
    local mantissa

    if((bits & 0x80000000) == 0) then
        sign = 1
    else
        sign = -1
    end

    exponent = (bits & 0x7f800000)/(2^23)
    mantissa = bits & 0x007fffff
    mantissa  = mantissa |0x00800000

    f = sign * mantissa * 2^(exponent-150)

    return f
end
 

print(float_i2f(0x45800000))
print(float_i2f(0x477fff00))


测下效果:

image.png

对应结果没问题:

image.png

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
 楼主| 发表于 2022-8-11 01:24:46 | 显示全部楼层
后面直接在TOOL端注册函数pg_readfloat, pg_readdouble,这样效果更高些。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-11-1 08:30 , Processed in 0.232015 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表