Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
CRAP | |
100.00% |
15 / 15 |
BaseConverter | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
4 | |
100.00% |
15 / 15 |
to10Base | |
100.00% |
1 / 1 |
2 | |
100.00% |
6 / 6 |
|||
toBase | |
100.00% |
1 / 1 |
2 | |
100.00% |
9 / 9 |
<?php | |
/** | |
* BaseConverter. | |
* | |
* @author Frank Nägler <mail@naegler.net> | |
* | |
* @link https://github.com/NeoBlack/BaseConverter | |
*/ | |
namespace NeoBlack\BaseConverter; | |
/** | |
* Class BaseConverter | |
* | |
* @package NeoBlack\BaseConverter | |
*/ | |
class BaseConverter | |
{ | |
/** | |
* Base64 nach RFC 4648 | |
* @var string | |
*/ | |
const BASE64 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_'; | |
/** | |
* @var string | |
*/ | |
const BASE62 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; | |
/** | |
* Base32 nach RFC 4648 | |
* @var string | |
*/ | |
const BASE32 = '0123456789ABCDEFGHIJKLMNOPQRSTUV'; | |
/** | |
* Base16 nach RFC 4648 | |
* @var string | |
*/ | |
const BASE16 = '0123456789ABCDEF'; | |
/** | |
* Convert from any base to base 10 . | |
* | |
* @param string $value | |
* @param string $base | |
* | |
* @return int | |
*/ | |
public static function to10Base(string $value, string $base = self::BASE64): int | |
{ | |
$baseLength = strlen($base); | |
$valueLength = strlen($value); | |
$result = strpos($base, $value[0]); | |
for ($i = 1; $i < $valueLength; $i++) { | |
$result = $baseLength * $result + strpos($base, $value[$i]); | |
} | |
return $result; | |
} | |
/** | |
* Convert from base 10 to another base. | |
* | |
* @param int $value | |
* @param string $base default static::BASE64 | |
* | |
* @return string | |
*/ | |
public static function toBase(int $value, string $base = self::BASE64): string | |
{ | |
$baseLength = strlen($base); | |
$radix = $value % $baseLength; | |
$result = $base[$radix]; | |
$tmp = floor($value / $baseLength); | |
while ($tmp) { | |
$radix = $tmp % $baseLength; | |
$tmp = floor($tmp / $baseLength); | |
$result = $base[$radix] . $result; | |
} | |
return $result; | |
} | |
} |