PHP实现的62进制转10进制,10进制转62进制函数示例

下面是完整的攻略讲解:

1. 背景介绍

在许多互联网场景下,我们经常需要对数据进行进制转换,比如将10进制的数字转化为62进制的字符串用于短链生成、url短链接等机制,所以实现一个PHP版的62进制与10进制的相互转换函数就变得尤为必要和实用。

2. 思路分析

实现62进制(支持大小写字母和数字)转10进制的思路是:

首先声明一个函数,以62进制数值和进制数为参数。接着,将62进制数值按进制数从低位到高位一个个位数地转换为10进制数。最后累加每一位上的转换结果,得出最终的10进制数值。

实现10进制转62进制的思路是:

首先声明一个函数,以10进制数值和进制数为参数。接着,用10进制数除以进制数,得到商与余数。将余数存储下来,并用商代替原来的10进制数,依次循环此过程直至除数为0,并得到所有余数。最后将余数倒序排列后转换成相应的62进制数值即可。

基于此,我们可以开始分别实现这两个函数。

3. PHP代码实现

/**
 * 62进制转10进制函数
 * @param string $num 62进制数值
 * @param int $radix 进制数,默认为62
 * @return int 对应的10进制数值
 */
function from62to10($num, $radix = 62)
{
    $dec = 0;
    $len = strlen($num);
    for ($i = 0; $i < $len; $i++) {
        $pos = strpos('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', $num[$i]);
        $dec = bcmul($dec, $radix);
        $dec = bcadd($dec, $pos);
    }
    return $dec;
}

/**
 * 10进制转62进制函数
 * @param int $num 10进制数值
 * @param int $radix 进制数,默认为62
 * @return string 对应的62进制数值
 */
function from10to62($num, $radix = 62)
{
    $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $str   = '';
    while ($num > 0) {
        $key  = $num % $radix;
        $str .= $chars[$key];
        $num  = ($num - $key) / $radix;
    }
    return strrev($str);
}

4. 测试实例

为了验证函数的正确性,我们可以分别设置若干测试用例进行验证。以下是两个测试用例:

示例1:62进制数值转10进制

$num = '7bck8Q';
$radix = 62;
$dec = from62to10($num, $radix);
var_dump($dec); // int(76543210)

解释:将62进制字符串"7bck8Q"转为对应的10进制数值76543210。

示例2:10进制数值转62进制

$num = 76543210;
$radix = 62;
$str = from10to62($num, $radix);
var_dump($str); // string(6) "7bck8Q"

解释:将10进制数值76543210转为对应的62进制字符串"7bck8Q"。

5. 总结

至此,我们已经讲解了如何使用PHP实现62进制数值与10进制数值的相互转换。这两个函数可广泛应用于短链生成、url短链接、数据编码与解码等场景。通过以上的方法和代码示例,相信您已经理解了PHP版本的62进制数值与10进制数值相互转换的原理和具体操作流程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP实现的62进制转10进制,10进制转62进制函数示例 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 欢乐商城源码/品云购商城源码/英文版商城源码/全开源 可二开

    demo软件园每日更新资源,请看到最后就能获取你想要的: 1.欢乐商城源码/品云购商城源码/英文版商城源码/全开源 可二开 商城源码/英文版商城源码/全开源 可二开 出海项目源码 后台为中文语言 页面效果: 2.SQL学习指南(第2版) 这是一本关于SQL的书,不是关于数据库的。以MySQL为例来讲,不过对于SQL Server, Oracle等的不同也做了…

    PHP 2023年4月17日
    00
  • php实现在多维数组中查找特定value的方法

    要在多维数组中查找特定的值,可以通过递归函数实现。以下是实现该方法的完整攻略: 步骤一:定义递归函数 定义一个递归函数,该函数接受两个参数:要查找的值和要搜索的数组。在函数中,首先判断当前数组是否为多维数组,如果是,则使用递归函数继续搜索。否则,比较当前数组元素的值和要查找的值是否相等,如果相等,则返回该数组元素的键名,否则返回false。 以下是递归函数的…

    PHP 2023年5月26日
    00
  • 总结PHP代码规范、流程规范、git规范

    让我来为你详细讲解“总结PHP代码规范、流程规范、git规范”的完整攻略。 PHP代码规范 编写具有高质量的PHP代码需要遵守一些规范。下面是一些常用的PHP代码规范。 代码风格 使用4个空格的缩进。 在逗号之后添加一个空格。 在方法、函数和控制结构之后添加一个空格。 使用大括号并将其放在新行上。 将elseif写成elseif,不要写成else if。 建…

    PHP 2023年5月24日
    00
  • PHP实现LRU算法的原理详解

    PHP实现LRU算法的原理详解 什么是LRU算法 LRU(Least Recently Used)是一种缓存算法,它的过期规则是:缓存空间满时,优先淘汰最近最少使用的缓存数据。即在一段时间内,如果某个数据没有被访问到,那么接下来它被访问到的几率也很小,就可以被淘汰掉。可以理解为”长时间不用的东西,就扔掉”。 LRU算法原理 LRU算法可以通过哈希表和双向链表…

    PHP 2023年5月27日
    00
  • 匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来

    为了实现匹配 CSDN 用户数据库与官方用户的重合度并将重叠部分的用户筛选出来,可以采用以下步骤: 步骤一:获取用户数据 从官方的用户数据库中拉取所有已经注册的用户信息,并从 CSDN 的用户数据库中拉取 CSDN 所有用户的信息。 使用 SQL 语句(或者其他适合的方式)将两个数据源中的用户信息合并,得到所有用户的完整信息。 示例: 假设我们有下面这个表格…

    PHP 2023年5月23日
    00
  • PHP生成随机字符串(3种方法)

    PHP生成随机字符串(3种方法) 在开发过程中,有时需要生成一些随机字符串来作为用户的密码、验证码等。本文将介绍PHP生成随机字符串的三种方法。 方法一:使用substr()和sha1()函数 function generateRandomString($length = 10) { $characters = ‘0123456789abcdefghijkl…

    PHP 2023年5月26日
    00
  • 浅谈PHP设计模式的命令模式

    简介: 命令模式:属于行为型的设计模式。将一个请求封装为一个对象,从而是你可用不同的请求对客户端进行参数化。对请求排队或记录请求日志,以及支持可撤销的操作。 适用场景: 命令发送者 只需要知道发送 请求对象,不需要知道如何完成请求 ;命令执行者 只需要知道如何 完成请求,不需要知道请求的发送过程 ; 优点: 封装调用和解耦。 容易的将数据记录到日志。 容易的…

    PHP 2023年4月18日
    00
  • PHP 数组黑名单/白名单实例代码详解

    关于“PHP 数组黑名单/白名单实例代码详解”,我会进行以下几个方面的讲解: 简要介绍黑名单/白名单 详细阐述黑名单/白名单的实现代码 附带两个示例说明 1. 简要介绍黑名单/白名单 在编写程序时,我们经常需要对用户输入的数据进行过滤,以防止潜在的安全漏洞。其中,一种比较常用的做法是采用黑名单/白名单的方式进行过滤。 所谓黑名单/白名单,就是对用户输入的数据…

    PHP 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部