首页 > 解决方案 > 有没有办法使用 Lua 将整数转换为始终为 4 位十六进制数

问题描述

我正在创建一个 Lua 脚本,它将计算温度值,然后将此值格式化为 4 位十六进制数字,该数字必须始终为 4 位。将答案作为字符串很好。

以前在CI中已经可以使用了

data_hex=string.format('%h04x', -21)

这将返回 ffeb

但是,在 Lua 中,我无法使用 'h' 字符串格式化程序删除 'h' 并不能满足否定答案,即

data_hex=string.format('%04x', -21)

print(data_hex)

返回 ffffffeb

data_hex=string.format('%04x', 21)

print(data_hex)

返回 0015

是否有与“h”字符串格式化程序等效的方便且可移植的方法?

标签: lua

解决方案


我建议您尝试使用按位与来截断正在打印的值的任何前导十六进制数字。

如果您有一个temp要打印的变量,那么您将使用类似的东西data_hex=string.format("%04x",temp & 0xffff)来删除前导十六进制数字,只留下最不重要的 4 个十六进制数字。

我喜欢这种方法,因为字符串操作较少,并且与有符号 16 位数字的实际数据类型一致。是否需要考虑减少字符串操作将取决于轮询温度的速率。

有关该format函数的更多信息,请参阅字符串库文章


推荐阅读