【问题标题】:How to get reverse number code from letters?如何从字母中获取反向数字代码?
【发布时间】:2016-12-15 20:14:04
【问题描述】:

我有将数字编码为字符串的函数:

  • 0 -> 一个
  • 1 -> b
  • 2 -> c
  • ...
  • 45 -> R

功能:

public static function encode($number) {
    $out = "";
    $codes = "abcdefghjkmnpqrstuvwxyz23456789ABCDEFGHJKMNPQRSTUVWXYZ";

    while ($number > 53) {
        $key = $number % 54;
        $number = floor($number / 54) - 1;
        $out = $codes{$key}.$out;
    }

    return $codes{$number}.$out;
}

如何实现将字母转回数字的反转功能?

【问题讨论】:

  • 你应该看看 strpos 函数,它可以为你提供一个字母在字符串中的位置:php.net/manual/en/function.strpos.php
  • 重新发明 ASCII 表?
  • 根据你的代码,如果给定的数字大于 53 是什么意思?
  • 我只需要构建一个简单的数组
  • @Dagon:已经是一个称为字符串的简单数组;-)

标签: php encoding decode encode decoding


【解决方案1】:

您可以将字符串视为数组并使用位置,这样编码会更容易:

$codes = "abcdefghjkmnpqrstuvwxyz23456789ABCDEFGHJKMNPQRSTUVWXYZ";
return $codes[$number];

您可能需要一些错误检查,例如:

return isset($codes[$number]) ? $codes[$number] : false;

然后解码,找到那个位置的字母:

$codes = "abcdefghjkmnpqrstuvwxyz23456789ABCDEFGHJKMNPQRSTUVWXYZ";
return strpos($codes, $letter);

如果没有找到strpos() 将为您返回false

【讨论】:

  • 没有一个答案有效。比如我要解码Hk4n、Za、www...总会返回53
  • 然后你需要用输入和输出来编辑你的问题。从您的问题中看不出这一点。
【解决方案2】:

strpos 函数使用方便

public static function decode($letter) {

    $letter = $letter[0];

    $codes = "abcdefghjkmnpqrstuvwxyz23456789ABCDEFGHJKMNPQRSTUVWXYZ";

    $pos = strpos($codes,$letter);

    return $pos;

}

【讨论】:

  • 没有一个答案有效。比如我要解码Hk4n、Za、www...总会返回53
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 2017-12-16
  • 1970-01-01
  • 2012-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多