如何使用Ruby生成基于字母数字字符串的颜色?

时间:2013-06-09 08:09:58

标签: ruby colors hex

我希望像“嘿那里”这样的东西变成#316583

我想要一个任何长度的字符串“煮沸”,以便说到十六进制颜色。我甚至不知道从哪里开始。

我在想,每个字符串的MD5哈希值都不同 - 但是如何将该哈希值转换为十六进制颜色数?

2 个答案:

答案 0 :(得分:13)

你可以先取几个数字:

require 'digest/md5'
color = Digest::MD5.hexdigest('My text')[0..5]

答案 1 :(得分:2)

您可以将md5值修改为2 ^ 24并将结果打印为十六进制,并在其前面加上#符号。

如果没有MD5,这是一个糟糕的方法,它在短字符串上给出了非常低的值,但显示了这个想法:

sprintf("#%06x", ("asdf".sum % (256*256*256)))

输出:

ruby-1.9.2-p290 :032 > sprintf("#%06x", ("asdf".sum % (256*256*256)))
 => "#00019e" 

"asdf".each_byte.inject(:+)替换为MD5值,你应该很好!