我有一个已诊断的测量信号并返回正数值。我需要使用 Lua 将此值转换为十六进制字符串,集成到 Excel 模板中,然后传递给 Python。这是我尝试过的 Lua 代码,但它不起作用:
_lua(R"§("string.format("%8X", @measdata:Diag_DTC[1].max($tStep1,$tStep1End))")§")
来自阵列的信号,例如,
@measdata:Diag_DTC[1].max($tStep1,$tStep1End)
等于10555136,应转换为A10F00
。
有人对如何解决这个问题有任何建议吗?预先感谢您。
当前代码的问题是无法正确执行数字转换和格式化。
_lua(R"§(string.format("%08X", tonumber(@measdata:Diag_DTC[1].max($tStep1,$tStep1End)) or 0))§")
在您的情况下
tonumber()
将测量值转换为数字,格式尚未正确
string.format("%08X", ...)
将数字格式化为大写十六进制字符串,用零填充为 8 个字符
or 0
作为 tonumber() 转换失败时的后备,以防止错误。
提示:下次不要在整个
string.format()
调用中添加引号,因为它们是不必要的并会导致问题。