我需要将随机文本转换为数字。但是ramdom文本总是被转换为相同的数字。例如:
xxxx -> 10
testing -> 396
stackoverflow -> 72
我无法使用字符数来转换string
因为如果我有2个字符串具有相同数字characters
他们需要具有不同的数字(至少在最多时间)。
我不需要在一个范围内有这个数字。没有!它可以是任何数字,因为在给定某个字符串的情况下它总是相同的。
答案 0 :(得分:4)
您可以尝试使用哈希(md5
,sha1
等):
$number = hexdec( md5("hello world") );
$number = hexdec( sha1("hello world") );
相同字符串的哈希值将转换为相同的数字。
答案 1 :(得分:2)
怎么样;
$number = crc32($string);
应该便宜,给出整数输出,并为您的用例产生合理的随机性。
答案 2 :(得分:0)
已展示的其他方法可能会发生碰撞。以下不应该。
$num = "";
for($i = 0; $i < strlen($str); $i++)
$num .= str_pad(ord($str[$i]), 3 "0", STR_PAD_LEFT);
return $num;