php int转字符串,int转字符串实现方法

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

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

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

实现代码为:<?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  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 

$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 

$return_value +=

($alpha_flip[$string[$i]] + 1) * pow(62, ($length - $i - 1));

}

return $return_value;

}

}

运行:<?php

include "./vendor/autoload.php";

var_dump(\EasySwoole\Utility\IntStr::toNum('JGoSFt2'));

var_dump(\EasySwoole\Utility\IntStr::toAlpha(100000000000000));

42e9980d27bac5d55e240b393d7ebc5d.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值