【问题标题】:How to implement javascript int.toString(32) in PHP?如何在 PHP 中实现 javascript int.toString(32)?
【发布时间】:2013-04-14 19:29:04
【问题描述】:

我有一个生成字符串唯一 ID 的 uniqueId 函数。我在 javascript 中使用它,你可以在这里找到它(见我的回答): Generate unique number based on string input in Javascript

我想在 PHP 中做同样的事情,但该函数主要生成浮点数而不是无符号整数(超出有符号整数值 PHP_MAX_INT),因此我无法使用 PHP 函数 dechex() 将其转换为十六进制。 dechex() 仅限于 PHP_MAX_INT 值,因此高于 PHP_MAX_INT 的每个值都将返回为 FFFFFFFF

在 javascript 中,当使用 int.toString(32) 时,它会生成一个包含除 A..F 之外的其他字母的字符串,例如:

dh8qi9t
je38ugg

如何在 PHP 中实现相同的结果?

【问题讨论】:

    标签: php javascript hex


    【解决方案1】:

    我建议base_convert($input,10,32),但正如您所观察到的,它不适用于太大的数字。

    相反,您可以自己实现它:

    function big_base_convert($input,$from,$to) {
      $out = "";
      $alphabet = "0123456789abcdefghijklmnopqrstuvwxyz";
      while($input > 0) {
        $next = floor($input/$to);
        $out = $alphabet[$input-$next*$to].$out; // note alternate % operation
        $input = $next;
      }
      return $out ?: "0";
    }
    

    【讨论】:

    • base_convert($input,10,32) 做得很好。非常感谢!
    • 嗯,只有一个问题:如何将其转换回无符号整数?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 2021-11-24
    • 2019-02-27
    • 2011-07-17
    • 2015-04-09
    • 1970-01-01
    相关资源
    最近更新 更多