-1

我需要将随机文本转换为数字。但是随机文本必须始终转换为相同的数字。例如:

xxxx -> 10
testing -> 396
stackoverflow -> 72

string如果我有 2 个具有相同数字的字符串characters需要不同的数字(至少在大多数情况下),我不能使用字符数来转换原因。

我不需要在一个范围内有这个数字。不!它可以是任何数字,因为给定特定字符串,它总是相同的。

4

3 回答 3

4

您可以尝试使用哈希(md5,sha1等):

$number = hexdec( md5("hello world") );
$number = hexdec( sha1("hello world") );

相同字符串的哈希将转换为相同的数字。

于 2013-07-12T01:55:45.693 回答
2

关于什么;

$number = crc32($string);

应该很便宜,提供整数输出,并为您的用例产生合理的随机性。

于 2013-07-12T02:00:47.000 回答
0

已显示的其他方法有可能发生冲突。以下不应该。

$num = "";
for($i = 0; $i < strlen($str); $i++)
    $num .= str_pad(ord($str[$i]), 3 "0", STR_PAD_LEFT);
return $num;
于 2013-07-12T02:04:28.450 回答