進行了:
- 變數唯一
- 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 協議》,轉載必須註明作者和本文連結