我发现这个公式可以在Lua中将十进制数转换为十六进制颜色值:
http://lua-users.org/lists/lua-l/2004-09/msg00054.html
但是,我对这个公式有几个问题:
谢谢!
答案 0 :(得分:8)
在Lua 5.x中,您可以使用带有%x
格式说明符的string.format函数将整数转换为十六进制表示。在你的情况下,它看起来像这样:
local input = 0.5
local output = string.format("%x", input * 256) -- "80"
我不太了解Lua 4.0.1所以我无法告诉你这个功能是否可用(也许是以不同的名字)。也就是说,如果不是,那么您可以通过将其转换为使用sscanf
的C函数来解决此问题。
答案 1 :(得分:0)
示例函数在 http://lua-users.org/lists/lua-l/2004-09/msg00054.html 不转换负数。 以下是负数和正数的转换示例:
function decimalToHex(num)
if num == 0 then
return '0'
end
local neg = false
if num < 0 then
neg = true
num = num * -1
end
local hexstr = "0123456789ABCDEF"
local result = ""
while num > 0 do
local n = math.mod(num, 16)
result = string.sub(hexstr, n + 1, n + 1) .. result
num = math.floor(num / 16)
end
if neg then
result = '-' .. result
end
return result
end