如何使用 Lua 将整数转换为始终为 4 位的十六进制数字?

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

之前在 C 中,我可以使用

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' 字符格式化程序的等价物?

点赞
用户1466970
用户1466970

我建议您尝试使用位与操作符来截取要打印的值中的所有前导十六进制数字。

如果您要打印一个名为 temp 的变量,则可以使用类似 data_hex=string.format("%04x",temp & 0xffff) 的代码,它将去掉前导十六进制数字,只保留最低有效的 4 个十六进制数字。

我喜欢这种方法,因为它减少了字符串操作,与有符号 16 位数字的实际数据类型相一致。是否减少字符串操作的问题取决于轮询温度的速率。

有关 format 函数的更多信息,请参见字符串库文档

2019-05-14 04:23:25