Skip to content

Instantly share code, notes, and snippets.

@marceloCodget
Created October 10, 2012 03:05
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marceloCodget/3862929 to your computer and use it in GitHub Desktop.
Save marceloCodget/3862929 to your computer and use it in GitHub Desktop.
RGB to Hex in Lua
-- passing a table like {255, 100, 20}
function application:rgbToHex(rgb)
local hexadecimal = '0X'
for key, value in pairs(rgb) do
local hex = ''
while(value > 0)do
local index = math.fmod(value, 16) + 1
value = math.floor(value / 16)
hex = string.sub('0123456789ABCDEF', index, index) .. hex
end
if(string.len(hex) == 0)then
hex = '00'
elseif(string.len(hex) == 1)then
hex = '0' .. hex
end
hexadecimal = hexadecimal .. hex
end
return hexadecimal
end
@appgurueu
Copy link

If you want padding, the last line needs to be return string.format("%06x", rgb).

Do you know where can I find a list of formattings and options for C-style string formatting?

What about https://en.wikipedia.org/wiki/Printf_format_string?

@atirut-w
Copy link

@ALLAH-2
Copy link

ALLAH-2 commented Apr 4, 2023

would u let that one slide marcelo codget

@igroin
Copy link

igroin commented Jan 18, 2024

im kinda noob at coding but here is my solution:

rgb = {235,123,175}
function convert_to_hex (rgb)
    local hex = ""
    for i = 1 , #rgb do
        local hex_table = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"}
        local num =  rgb[i]/16 
        local whole = math.floor( num )
        local remainder = num - whole
        hex = hex .. hex_table[whole+1] .. hex_table[remainder*16 + 1]
    end
    return hex
end

print(convert_to_hex(rgb))

@atirut-w
Copy link

That's a frightening piece of code you wrote up there

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment