根据字典,转成相应的进制
进行了:
- 变量唯一
- PHP 8 风格注释
- 长语句改为短语句并进行注释
做为备忘📝
<?php
class Test
{
public string $map = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
// $map 的长度
public string $mapLen = '62';
/**
* 根据字典,转成相应的进制
*
* @param string $number 数字
* @return string
*/
public function hexTo(string $number): string
{
$string = '';
do {
$mod = (int) bcmod($number, $this->mapLen);
$string = $this->map[$mod].$string;
$number = bcdiv($number, $this->mapLen);
} while ($number > 0);
return $string;
}
/**
* 根据字典,转成十进制
*
* @param string $string 字符串
* @return int
*/
public function toDecimal(string $string): int {
$number = 0;
$strLen = strlen($string);
for ($i = 0; $i < $strLen; $i++) {
$position = strpos($this->map, $string[$i]);
// 根据当前位数,字符转十进制
$charToDecimal = bcmul(bcpow($this->mapLen, $strLen - $i - 1), $position);
// 每个字符累加
$number = bcadd($charToDecimal, $number);
}
return $number;
}
}
$test = new Test;
echo $test->hexTo(61);
// Z
echo $test->toDecimal('Z');
// 61
本作品采用《CC 协议》,转载必须注明作者和本文链接