PHP - 将字符转换为数字


PHP - Convert characters to a number

假设我有一个这样的字符串:

whateverthisis123 #_-

我想将此字符串转换为数字间隔内的数字,例如在 1-1000 内。

例如,上面的字符串可以转换为

387

这带有一些规则:

  • 字符串可以包含每个字符。
  • 这个数字应该感觉是随机的,但不可能是随机的。相同的字符串应始终返回相同的数字。
  • 较长的字符串不应使数字更高。应该感觉随机。
  • AAA 不应该给出像 222 这样的数字。应该感觉随机。
  • 它应该接受例如 1 到 1000 的间隔。
  • "
  • thisstring"和"thisstring1"是相似的。数字应该仍然不一样。

PHP 中是否有内置函数?如果没有,有什么聪明的想法如何创建这样的东西吗?

如果先转换为MD5,也许会更容易? http://www.php.net/manual/en/function.md5.php

你本质上是在描述一个哈希函数。MD5看起来像是要走的路。如果您需要将其转换为数字,则可以intval()它。要将其保持在 1-1000 之间,请使用 $number % 1000

注意:如果这与安全性/密码有关,则是一个坏主意。

从我的评论中扩展,这是一个完整的代码示例(比哈希更有趣的方式......

 <?php
  function numberout(string $input)
      {
         $hash=md5($input);
         $calculate=hexdec(substr($hash,0,3)); //take out 3 digits
         $maxhex=4095; //3 digit hex ,65535 for 4 digit hex and so on...
         $out = ($calculate*1000)/$maxhex;
         return round($out);
      }
 ?>

抱歉,如果这在编程上是错误的,我已经习惯了 c#,但我还没有测试过这个。所以如果有任何错误,我希望有人编辑它