首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >int转字符串实现方法

int转字符串实现方法

作者头像
仙士可
发布2021-03-03 15:56:46
发布2021-03-03 15:56:46
1.1K00
代码可运行
举报
文章被收录于专栏:仙士可博客仙士可博客
运行总次数:0
代码可运行

抖音的分享链接一般为: https://v.douyin.com/JGoSFt2/

那么后面那串  JGoSFt2  是什么呢?

其实后面那串为分享id转字符串,原始数据可能为 :1091566355946 ,通过特定算法转换为了更短的字符串

实现代码为:

代码语言:javascript
代码运行次数:0
运行
复制
<?php


namespace EasySwoole\Utility;


class IntStr
{
    public const intMax = 9223372036854775668;

    private const alphabet = [
        'A','a','B','b','C','c','D','d','E', 'e',
        'F','f','G','g','H','h','I','i','J','j',
        'K','k','L','l','M','m','N','n','O','o',
        'P','p','Q','q','R','r','S','s','T','t',
        'U','u','V','v','W','w','X','x', 'Y','y',
        'Z','z','0','1','2','3','4','5','6','7','8','9'
    ];

    public static function toAlpha($number):string
    {
        if($number < 0 && $number > self::intMax){
            throw new \InvalidArgumentException('number error');
        }
        $alpha = '';
        if($number <= 61){
            return self::alphabet[$number];
        } elseif($number > 61){
            $dividend = ($number + 1);
            while ($dividend > 0){
                $modulo = ($dividend - 1) % 62;
                if($modulo < 0){
                    $modulo = 62+$modulo;
                }
                $alpha = self::alphabet[$modulo] . $alpha;
                $dividend = floor((($dividend - $modulo) / 62));
            }
        }
        return $alpha;
    }

    public static function toNum($string):int
    {
        $alpha_flip = array_flip(self::alphabet);
        $return_value = -1;
        $length = strlen($string);
        for ($i = 0; $i < $length; $i++) {
            $return_value +=
                ($alpha_flip[$string[$i]] + 1) * pow(62, ($length - $i - 1));
        }
        return $return_value;
    }
}

运行:

代码语言:javascript
代码运行次数:0
运行
复制
<?php
include "./vendor/autoload.php";
var_dump(\EasySwoole\Utility\IntStr::toNum('JGoSFt2'));
var_dump(\EasySwoole\Utility\IntStr::toAlpha(100000000000000));

本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/02/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档