我想要像“嘿那里”这样的东西变成,例如,#316583
。
我希望将任何长度的字符串“归结为”,可以说是十六进制颜色。我什至不知从哪里开始。
我在想,每个字符串的 MD5 散列是不同的 - 但是如何将该散列转换为十六进制颜色数字?
你可以只取几个前几位数字:
require 'digest/md5'
color = Digest::MD5.hexdigest('My text')[0..5]
您可以将 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 值,你应该很好!