首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Invert函数:基数38转换

Invert函数:基数38转换
EN

Stack Overflow用户
提问于 2009-09-20 07:17:34
回答 3查看 1.1K关注 0票数 0

你能告诉我下面的PHP函数的invert函数是怎么回事吗?

代码语言:javascript
复制
<?php
function id2secure($old_number) {
    $alphabet_en = '1357902468acegikmoqsuwybdfhjlnprtvxz-_';
    $new_number = '';
    while ($old_number > 0) {
        $rest = $old_number%38;
        if ($rest >= 38) { return FALSE; }
        $new_number .= $alphabet_en[$rest];
        $old_number = floor($old_number/38);
    }
    $new_number = strrev($new_number);
    return $new_number;
}
echo id2secure(172293);
?>

非常感谢您的提前!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-20 00:10:27

This is secure :)我花了几分钟才破解它。这就是你要的,

代码语言:javascript
复制
function secure2id($new_number) {
        $alphabet_en = '1357902468acegikmoqsuwybdfhjlnprtvxz';
        $old_number = 0;
        $new_number = strrev($new_number);
        $len=strlen($new_number);
        $n=0;
        $base=1;
        while($n<$len){
            $c=$new_number[$n];
            $index = strpos($alphabet_en, $c);
            if ($index === false)
                 break;
            $old_number += $base * $index;
            $base *= 38;
            $n++;
        }
        return $old_number;
}
票数 1
EN

Stack Overflow用户

发布于 2009-09-19 23:44:17

我还没有测试过这段代码,但它可能会工作:

代码语言:javascript
复制
<?php function secure2id($sr)
{
  $s = strrev($sr);
  $alpha = '1357902468acegikmoqsuwybdfhjlnprtvxz';
  $alpha2num = array();
  $n = strlen($alpha);
  for($i = 0; $i < $n; $i++)
  {
    $alpha2num[$alpha[$i]] = $i;
  }
  $rez = 0;
  $n = strlen($s);
  $b = 1;
  for($i = 0; $i < $n; $i++)
  {
    $rez += $b * $alpha2num[$s[$i]];
    $b *= 38;
  }
  return $rez;
} ?>

`

票数 1
EN

Stack Overflow用户

发布于 2009-09-19 23:45:06

你是在问如何将基数38转换为基数10吗?数值算法是这样的:

  1. 设N为以10为基数的新数字。首先将N设置为零。
  2. 设X为以38为基数的原始数字。
  3. 将N乘以38。
  4. 设D为X的最左侧数字。
  5. 设T为以10为基数的D的值。
  6. 将T添加到N。
  7. 从X中删除D(因此数字X现在缩短了1位数字)。
  8. 如果X为空,转到10 .
  9. 转到3.
  10. 返回N,它现在是完全转换的基数10数字。

现在您已经理解了数学知识,将这些步骤转换为PHP函数应该相当简单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1449774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档