You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Lua中将VFD设备Modbus传输的版本号整数拆分为指定格式

在Lua中将Modbus传来的U-integer版本号转换为1.01.03格式

针对你提到的VFD设备通过Modbus发送的U-integer值10103,要转换为1.01.03格式的版本号,可以通过数学拆分+格式化的方式实现,下面是具体代码和逻辑:

实现代码

local raw_version = 10103

-- 拆分主、次、修订版本号
local major = math.floor(raw_version / 10000)
local minor = math.floor((raw_version / 100) % 100)
local patch = raw_version % 100

-- 格式化并拼接成目标格式
local formatted_version = string.format("%d.%02d.%02d", major, minor, patch)

print(formatted_version) -- 输出结果: 1.01.03

逻辑说明

  1. 主版本号提取:将原始数值除以10000后取整,得到最高位的主版本号(10103 ÷ 10000 = 1.0103,取整后为1)。
  2. 次版本号提取:先将数值除以100取整(10103 ÷ 100 = 101),再对100取余得到次版本的数值(101 % 100 = 1),最后用%02d格式化为两位数字,自动补零得到01。
  3. 修订版本号提取:直接对原始数值取100的余数,得到修订版本的数值(10103 % 100 = 3),同样用%02d格式化为两位数字得到03。
  4. 拼接格式:通过string.format将三个部分按主版本.次版本.修订版本的格式拼接。

这种方法也适用于其他同结构的版本号数值,比如输入123456会输出12.34.56,输入1001会输出0.01.01(如果主版本允许为0的话)。

内容的提问来源于stack exchange,提问作者vishnu anand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 17:52:48