为 md5 哈希分配一个数字(1 到 9 之间)
有一个 md5 哈希值,例如:
md5("test") = "098f6bcd4621d373cade4e832627b4f6"
如何编写一个函数,以便每次将 md5 哈希值传递给它时都返回 1 到 9 之间的数字?该数字必须始终相同,即 myfunc("098f6bcd4621d373cade4e832627b4f6") 应始终返回相同的数字。 感谢您的帮助。
Having a md5 hash like:
md5("test") = "098f6bcd4621d373cade4e832627b4f6"
How can I write a function to return a number between 1 and 9 every time I pass the md5 hash to it? The number must always be the same, i.e. myfunc("098f6bcd4621d373cade4e832627b4f6") should always return the same number.
Thanks for your help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
这太矫枉过正了,返回最左边的数字的建议是最好的......
这样您就可以通过修改返回语句轻松更改您感兴趣的返回值的范围。
或者,更紧凑的版本:
您甚至可以将最小值和最大值作为参数传递:
This is WAY overkill, and the suggestion of returning left-most digit is the best...
This way you can easily change the range of return values you are interested in by modifying the return statment.
Or, a more compact version:
You could even pass the min and max as args:
最简单的方法:找到 md5 中的第一个数字并返回它:) 您可以使用简单的正则表达式来完成。当然,如果没有找到数字,请记住有一些安全的返回值(但这种情况几乎不会发生)。
Simplest way: find first number in md5 and return it :) You can do it with easy regexp. Of course remember to have some safe return value if no number was found (but it will happen hardly ever).
始终返回1。符合规格!
更严重的是,你需要这个数字代表什么?
Return 1 all the time. Meets the spec!
More seriously, what do you need this number to represent?
返回视为字符串的哈希中最左边的数字(当然是 1..9)。
或者我错过了重点?
Return the leftmost digit (in 1..9 of course) in the hash considered as a string.
Or have I missed the point ?
您本质上需要哈希函数的哈希函数。这将是一些伪代码:
You essentially want a hash function of your hash function. This would be some psedo code:
这是一个解决方案:
return substr(base_convert($md5, 16, 9), -1) + 1;
这可能是您想要的,尽管您没有说出来。
Here's a solution:
return substr(base_convert($md5, 16, 9), -1) + 1;
This is what you probably want although you did not say it.