Advertisement
Guest User

ROBLOX Color3FromHex

a guest
May 17th, 2016
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.56 KB | None | 0 0
  1. local c3 = Color3.new
  2. local floor = math.floor
  3. local function Color3FromHex(str)
  4.     if type(str) == "number" then -- in case of hexadecimal numbers, we can do this!
  5.         return c3(floor(str / (256^2)), floor(str / 256) % 256, str % 256)
  6.     end
  7.     assert(type(str) == "string" and str:gsub("^#", ""):match("^%x+$"), "Input must be a hexadecimal string or number")
  8.     str = str:gsub("^#", ""):upper()
  9.     if #str == 3 then
  10.         str = str:sub(1, 1):rep(2) .. str:sub(2, 2):rep(2) .. str:sub(3, 3):rep(2)
  11.     elseif #str == 1 then
  12.         str = str:rep(6)
  13.     end
  14.     if #str == 6 then
  15.         return c3(tonumber(str:sub(1, 2), 16) / 255, tonumber(str:sub(2, 3), 16) / 255, tonumber(str:sub(4, 5), 16) / 255)
  16.     else
  17.         return c3()
  18.     end
  19. end
  20.  
  21. local function Color3FromHex2(str)
  22.     if type(str) == "number" then -- in case of hexadecimal numbers, we can do this!
  23.         return c3(floor(str / (256^2)), floor(str / 256) % 256, str % 256)
  24.     end str = tonumber(str,16)
  25.     assert(str, "Input must be a hexadecimal string or number")
  26.     return Color3FromHex(str)
  27. end
  28.  
  29. local n = 100000
  30. local start = tick()
  31. for i = 1, n do
  32.     local c = Color3FromHex("#ffffff")
  33. end
  34. print("#ffffff:", ((tick() - start) / n) * 1000, "ms")
  35. wait(0.1)
  36. local start = tick()
  37. for i = 1, n do
  38.     local c = Color3FromHex("000000")
  39. end
  40. print("000000:", ((tick() - start) / n) * 1000, "ms")
  41. wait(0.1)
  42. local start = tick()
  43. for i = 1, n do
  44.     local c = Color3FromHex("#f00")
  45. end
  46. print("#f00:", ((tick() - start) / n) * 1000, "ms")
  47. wait(0.1)
  48. local start = tick()
  49. for i = 1, n do
  50.     local c = Color3FromHex("0a0")
  51. end
  52. print("0a0:", ((tick() - start) / n) * 1000, "ms")
  53. wait(0.1)
  54. local start = tick()
  55. for i = 1, n do
  56.     local c = Color3FromHex("#F")
  57. end
  58. print("#F:", ((tick() - start) / n) * 1000, "ms")
  59. wait(0.1)
  60.  
  61. local start = tick()
  62. for i = 1, n do
  63.     local c = Color3FromHex2("ffffff")
  64. end
  65. print("hex2 ffffff:", ((tick() - start) / n) * 1000, "ms")
  66. wait(0.1)
  67.  
  68. local start = tick()
  69. for i = 1, n do
  70.     local c = Color3FromHex2("f00")
  71. end
  72. print("hex2 f00 (broken):", ((tick() - start) / n) * 1000, "ms")
  73. wait(0.1)
  74.  
  75. local start = tick()
  76. for i = 1, n do
  77.     local c = Color3FromHex(0xffffff)
  78. end
  79. print("0xffffff:", ((tick() - start) / n) * 1000, "ms")
  80. wait(0.1)
  81.  
  82.  
  83. print(Color3FromHex("#ffffff"))
  84. print(Color3FromHex("000000"))
  85. print(Color3FromHex("#f00"))
  86. print(Color3FromHex("0a0"))
  87. print(Color3FromHex("#F"))
  88. print(Color3FromHex(0xffffff))
  89. print(Color3FromHex(0xffffffff))
  90. print(Color3FromHex2("f00"))
  91.  
  92. --[[print(0xffffff)
  93. print(tostring(0xffffff))
  94. print(0xffffff % 256, math.floor(0xffffff / 256) % 256, math.floor(0xffffff / (256^2)) % 256)]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement