我希望像“嘿那里”这样的东西变成#316583
。
我想要一个任何长度的字符串“煮沸”,以便说到十六进制颜色。我甚至不知道从哪里开始。
我在想,每个字符串的MD5哈希值都不同 - 但是如何将该哈希值转换为十六进制颜色数?
答案 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值,你应该很好!