php实现36进制与10进制转换功能示例

下面是关于“PHP实现36进制与10进制转换功能”的攻略,包括基本概念、转换方法以及示例代码。

基本概念

在计算机科学中,36进制是指使用36个数字和字母(0-9, A-Z)来表示数字的进位系统,与10进制(0-9)不同。而10进制是我们最常使用的进位系统,也称为“十进制数制”。

在实际应用中,我们经常需要将36进制与10进制之间进行相互转换,用于解密、编码、加密等各种场合。

转换方法

10进制转36进制

  • 将10进制数不断地除以36,每次取余数作为36进制数的高位数字,直到商为0。
  • 将得到的所有余数倒序排列即可得到36进制数。

示例代码:

function decimalTo36($num) {
  $chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  $result = '';
  while ($num > 0) {
    $rem = $num % 36;
    $result = $chars[$rem] . $result;
    $num = (-1) * floor((-1) * $num / 36);
  }
  return $result;
}
echo decimalTo36(12345); // 输出:9IX

36进制转10进制

  • 将36进制数从最高位到最低位依次遍历。
  • 将每个36进制数字转化为10进制数字,再乘以该位上的权值(36的对应的幂次方),然后将所有结果相加即可。

示例代码:

function from36($num) {
  $chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  $result = 0;
  $len = strlen($num);
  for ($i = 0; $i < $len; $i++) {
    $result += strpos($chars, $num[$i]) * pow(36, $len - $i - 1);
  }
  return $result;
}
echo from36('9IX'); // 输出:12345

示例说明

示例1

需求:将36进制数‘ZZZ’转换为10进制数。

解法:

  • 将36进制数从最高位到最低位依次遍历:'Z' -> 'Z' -> 'Z'
  • 将每个36进制数字转化为10进制数字,再乘以该位上的权值,即 $10^2$、$10^1$、$10^0$,相加即可:$3510^2 + 3510^1 + 35*10^0 = 46655$

示例代码:

function from36($num) {
  $chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  $result = 0;
  $len = strlen($num);
  for ($i = 0; $i < $len; $i++) {
    $result += strpos($chars, $num[$i]) * pow(36, $len - $i - 1);
  }
  return $result;
}
echo from36('ZZZ'); // 输出:46655

示例2

需求:将10进制数1000转换为36进制数。

解法:

  • 将10进制数不断地除以36,每次取余数作为36进制数的高位数字,直到商为0。算出来的余数需要转化为对应的36进制数字。
  • 将得到的所有余数倒序排列即可。

示例代码:

function decimalTo36($num) {
  $chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  $result = '';
  while ($num > 0) {
    $rem = $num % 36;
    $result = $chars[$rem] . $result;
    $num = (-1) * floor((-1) * $num / 36);
  }
  return $result;
}
echo decimalTo36(1000); // 输出:RS

以上是关于“PHP实现36进制与10进制转换功能”的攻略,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php实现36进制与10进制转换功能示例 - Python技术站

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

相关文章

  • 两种php去除二维数组的重复项方法

    以下是 “两种php去除二维数组的重复项方法” 的完整攻略: 方法一:使用array_unique函数 array_unique() 函数可以去除数组中的重复项,包括二维数组。使用此方法需要注意的是,array_unique() 函数只能对一维数组去重,因此我们还需要配合使用 array_map() 函数实现多维数组去重。 示例代码如下: $arr = ar…

    PHP 2023年5月26日
    00
  • PHP对称加密算法(DES/AES)类的实现代码

    要实现PHP的对称加密算法,我们可以使用PHP内建的openssl扩展。具体来说,使用openssl_encrypt和openssl_decrypt函数可以实现DES和AES算法。 使用openssl_encrypt函数加密 function encrypt($data, $key, $cipher = "aes-128-cbc") { …

    PHP 2023年5月27日
    00
  • PHP从数组中删除元素的四种方法实例

    下面是详细讲解“PHP从数组中删除元素的四种方法实例”的攻略。 1. 使用unset函数删除指定的数组元素 unset函数可以用来删除指定的数组元素,可接收任意数量的参数。示例代码如下: $fruits = array(‘apple’, ‘banana’, ‘orange’, ‘watermelon’); unset($fruits[1]); // 删除索引…

    PHP 2023年5月26日
    00
  • PHP+MYSQL实现用户的增删改查

    下面就来详细讲解一下“PHP+MYSQL实现用户的增删改查”的完整攻略。 一、准备工作 在开始之前,我们需要做一些准备工作才能进行后续的操作。 1.1 创建数据库 首先,我们需要在MYSQL中创建一个数据库,这个数据库将用来存储用户的信息。我们可以在MYSQL中使用下面的SQL语句来创建一个名为users的数据库: CREATE DATABASE users…

    PHP 2023年5月27日
    00
  • 建站常用13种PHP开源CMS比较

    下面是“建站常用13种PHP开源CMS比较”的完整攻略: 1. 介绍 很多网站都是通过使用开源CMS来快速搭建的。选择一款适合自己的CMS是很重要的,因为它关系到网站的易用性、扩展性等。在这里我们来比较下13种常用的PHP开源CMS,来帮助大家更好的选择。 2. CMS比较 2.1 WordPress WordPress是一款非常出名的开源CMS,它是以博客…

    PHP 2023年5月24日
    00
  • PHP排序之二维数组的按照字母排序实现代码

    我们来详细讲解“PHP排序之二维数组的按照字母排序实现代码”的完整攻略。 一、问题描述 在进行开发中,经常需要对二维数组中的数据进行按字母排序。例如,我们有一个存储城市名称和邮编的二维数组,现在需要根据城市名称进行字母排序。那么该如何实现呢? 二、解决方案 在PHP中,我们可以使用array_multisort()函数来对二维数组进行排序。下面是该函数的基本…

    PHP 2023年5月26日
    00
  • php四种基础算法代码实例

    下面我将为您详细讲解“php四种基础算法代码实例”的攻略。 简介 本文主要介绍PHP四种基础算法代码实例,包括查找、排序、递归、动态规划四个方面,旨在帮助读者提高对PHP算法的理解和应用。 查找算法 二分查找 二分查找是一种基于比较目标值和查找中值的算法。查找前必须先体会「有序」的重要性。如果数据未排序,需要先排序。 代码实例: function binar…

    PHP 2023年5月23日
    00
  • 详解PHP中数组函数的知识点

    以下是“详解PHP中数组函数的知识点”的完整使用攻略,包括数组函数的基本概念、常见函数和示例说明等内容。 数组函数基本概念 数组是一种常见的数据类型,它可以存储多个值,并通过索引访问这些值。在PHP中,数组函数可以帮助程序对数组进行操作和处理,例如添加、删除、排序等。 常见函数 以下是PHP中常见的数组函数: 1. 添加元素 array_push array…

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