我需要将随机文本转换为数字。但是随机文本必须始终转换为相同的数字。例如:
xxxx -> 10
testing -> 396
stackoverflow -> 72
string
如果我有 2 个具有相同数字的字符串characters
需要不同的数字(至少在大多数情况下),我不能使用字符数来转换原因。
我不需要在一个范围内有这个数字。不!它可以是任何数字,因为给定特定字符串,它总是相同的。
您可以尝试使用哈希(md5
,sha1
等):
$number = hexdec( md5("hello world") );
$number = hexdec( sha1("hello world") );
相同字符串的哈希将转换为相同的数字。
关于什么;
$number = crc32($string);
应该很便宜,提供整数输出,并为您的用例产生合理的随机性。
已显示的其他方法有可能发生冲突。以下不应该。
$num = "";
for($i = 0; $i < strlen($str); $i++)
$num .= str_pad(ord($str[$i]), 3 "0", STR_PAD_LEFT);
return $num;