如何用红宝石生成一个随机的十六进制颜色?红宝石,生成一个随机的十六进制颜色
回答
这里有一种方法:
colour = "%06x" % (rand * 0xffffff)
您可以生成单独的每个组件:
r = rand(255).to_s(16)
g = rand(255).to_s(16)
b = rand(255).to_s(16)
r, g, b = [r, g, b].map { |s| if s.size == 1 then '0' + s else s end }
color = r + g + b # => e.g. "09f5ab"
这是可定制的,但Jeremy的解决方案要简洁得多。 – Benson 2010-03-09 07:43:05
对于任意字节长度(替换3 w /字节数):'“”.tap {| s | 3.times {s <<(“%02x”%rand(255))}}' – 2012-03-28 19:40:00
但这仍然是一个很酷的方式来做到这一点,大拇指为可读性。 – 2014-03-04 06:50:07
SecureRandom.hex(3)
#=> "fef912"
的SecureRandom
模块是Ruby的标准库的一部分
require 'securerandom'
这是autoloade d,但如果你使用的是Rails 3.0或更低版本,则需要使用
ActiveSupport::SecureRandom.hex(3)
如果要使用此选项,则需要在十六进制的“#”。很好用,只是不要忘记开头的散列符号。 – 2018-01-25 07:25:37
有人可以解释它(特别是“%06x”?) – Dorian 2012-01-17 05:12:32
String上的[%method](http://ruby-doc.org/core-1.9.3/String.html#method-i-25)使用字符串作为参数的格式规范。“%06x”表示:将数字格式化为十六进制,6个字符(本例中为数字)宽,0填充 – 2012-03-03 16:37:28