有没有办法使用Lua将整数转换为始终为4位十六进制数字

时间:2019-05-13 10:59:34

标签: lua

我正在创建一个Lua脚本,它将计算温度值,然后将此值格式化为4位十六进制数字,该数字必须始终为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'字符串格式化程序?

1 个答案:

答案 0 :(得分:1)

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

如果您有要打印的变量temp,则可以使用data_hex=string.format("%04x",temp & 0xffff)之类的东西,它会删除前导十六进制数字,而仅留下最低有效的4个十六进制数字。

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

有关format函数的更多信息,请参见The String Library article