Skip to content

Commit

Permalink
Add PHPDoc
Browse files Browse the repository at this point in the history
  • Loading branch information
ben221199 committed Aug 6, 2022
1 parent 540a623 commit d500c94
Show file tree
Hide file tree
Showing 9 changed files with 312 additions and 263 deletions.
56 changes: 32 additions & 24 deletions src/Base10.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,38 @@

class Base10{

public static function decode(string $decimal): string{
$hex = BaseUtil::str_baseconvert($decimal,10,16);
while(strlen($hex)%2!==0){
$hex = '0'.$hex;
}
foreach(str_split($decimal) AS $chunk){
if($chunk!=="0"){
break;
}
$hex = '00'.$hex;
}
return hex2bin($hex);
}
/**
* @param string $decimal
* @return string
*/
public static function decode(string $decimal): string{
$hex = BaseUtil::str_baseconvert($decimal,10,16);
while(strlen($hex)%2!==0){
$hex = '0'.$hex;
}
foreach(str_split($decimal) AS $chunk){
if($chunk!=="0"){
break;
}
$hex = '00'.$hex;
}
return hex2bin($hex);
}

public static function encode(string $data): string{
$hex = bin2hex($data);
$decimal = BaseUtil::str_baseconvert($hex,16,10);
foreach(str_split($data) AS $chunk){
if($chunk!=="\0"){
break;
}
$decimal = '0'.$decimal;
}
return $decimal;
}
/**
* @param string $data
* @return string
*/
public static function encode(string $data): string{
$hex = bin2hex($data);
$decimal = BaseUtil::str_baseconvert($hex,16,10);
foreach(str_split($data) AS $chunk){
if($chunk!=="\0"){
break;
}
$decimal = '0'.$decimal;
}
return $decimal;
}

}
20 changes: 14 additions & 6 deletions src/Base16.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,20 @@

class Base16{

public static function decode(string $hex): string{
return hex2bin($hex);
}
/**
* @param string $hex
* @return string
*/
public static function decode(string $hex): string{
return hex2bin($hex);
}

public static function encode(string $data): string{
return bin2hex($data);
}
/**
* @param string $data
* @return string
*/
public static function encode(string $data): string{
return bin2hex($data);
}

}
46 changes: 27 additions & 19 deletions src/Base2.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,33 @@

class Base2{

public static function decode(string $binary): string{
$data = '';
foreach(str_split($binary,8) AS $chunk){
$dataChunk = chr(bindec($chunk));
$data .= $dataChunk;
}
return $data;
}
/**
* @param string $binary
* @return string
*/
public static function decode(string $binary): string{
$data = '';
foreach(str_split($binary,8) AS $chunk){
$dataChunk = chr(bindec($chunk));
$data .= $dataChunk;
}
return $data;
}

public static function encode(string $data): string{
$binary = '';
foreach(str_split($data) AS $chunk){
$binaryChunk = decbin(ord($chunk));
while(strlen($binaryChunk)%8!==0){
$binaryChunk = '0'.$binaryChunk;
}
$binary .= $binaryChunk;
}
return $binary;
}
/**
* @param string $data
* @return string
*/
public static function encode(string $data): string{
$binary = '';
foreach(str_split($data) AS $chunk){
$binaryChunk = decbin(ord($chunk));
while(strlen($binaryChunk)%8!==0){
$binaryChunk = '0'.$binaryChunk;
}
$binary .= $binaryChunk;
}
return $binary;
}

}
134 changes: 59 additions & 75 deletions src/Base32.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,87 +3,71 @@

class Base32{

public static function decode(string $data,string $alphabet): string{
$flippedAlphabet = array_flip(str_split($alphabet));
$binary = '';
for($i=0;$i<strlen($data);$i++){
$char = strtolower($data[$i]);
if($char==='='){
continue;
}
$binaryChunk = decbin($flippedAlphabet[$char]);
while(strlen($binaryChunk)%5!==0){
$binaryChunk = '0'.$binaryChunk;
}
$binary .= $binaryChunk;
}
$padding = strlen($binary)%8;
if($padding!==0){
$binary = substr($binary,0,-$padding);
}
return Base2::decode($binary);
/**
* @param string $data
* @param string $alphabet
* @return string
*/
public static function decode(string $data,string $alphabet): string{
$flippedAlphabet = array_flip(str_split($alphabet));
$binary = '';
for($i=0;$i<strlen($data);$i++){
$char = strtolower($data[$i]);
if($char==='='){
continue;
}
$binaryChunk = decbin($flippedAlphabet[$char]);
while(strlen($binaryChunk)%5!==0){
$binaryChunk = '0'.$binaryChunk;
}
$binary .= $binaryChunk;
}
$padding = strlen($binary)%8;
if($padding!==0){
$binary = substr($binary,0,-$padding);
}
return Base2::decode($binary);
}

/**
* TODO Make clean
* @param string $data
* @param string $alphabet
* @return string
*/
public static function encode(string $data,string $alphabet): string{
// Empty string results in empty string
if ('' === $data) {
return '';
}

// $map = str_split($alphabet);
// $flippedMap = array_flip($map);
//
// $paddingCharCount = substr_count($data, $map[32]);
// $allowedValues = array(6,4,3,1,0);
// if(!in_array($paddingCharCount, $allowedValues)) return false;
// for($i=0; $i<4; $i++){
// if($paddingCharCount == $allowedValues[$i] &&
// substr($data, -($allowedValues[$i])) != str_repeat($map[32], $allowedValues[$i])) return false;
// }
// $data = str_replace('=','', $data);
// $data = str_split($data);
// $binaryString = "";
// for($i=0; $i < count($data); $i = $i+8) {
// $x = "";
// if(!in_array($data[$i], $map)) return false;
// for($j=0; $j < 8; $j++) {
// $x .= str_pad(base_convert(@$flippedMap[@$data[$i + $j]], 10, 2), 5, '0', STR_PAD_LEFT);
// }
// $eightBits = str_split($x, 8);
// for($z = 0; $z < count($eightBits); $z++) {
// $binaryString .= ( ($y = chr(base_convert($eightBits[$z], 2, 10))) || ord($y) == 48 ) ? $y:"";
// }
// }
// return $binaryString;
}
$encoded = '';

public static function encode(string $data,string $alphabet): string{
// Empty string results in empty string
if ('' === $data) {
return '';
}
//Set the initial values
$n = $bitLen = $val = 0;
$len = strlen($data);

$encoded = '';
//Pad the end of the string - this ensures that there are enough zeros
$data .= str_repeat(chr(0), 4);

//Set the initial values
$n = $bitLen = $val = 0;
$len = strlen($data);
//Explode string into integers
$chars = (array) unpack('C*', $data, 0);

//Pad the end of the string - this ensures that there are enough zeros
$data .= str_repeat(chr(0), 4);
while ($n < $len || 0 !== $bitLen) {
//If the bit length has fallen below 5, shift left 8 and add the next character.
if ($bitLen < 5) {
$val = $val << 8;
$bitLen += 8;
$n++;
$val += $chars[$n];
}
$shift = $bitLen - 5;
$encoded .= ($n - (int)($bitLen > 8) > $len && 0 == $val) ? '=' : $alphabet[$val >> $shift];
$val = $val & ((1 << $shift) - 1);
$bitLen -= 5;
}

//Explode string into integers
$chars = (array) unpack('C*', $data, 0);

while ($n < $len || 0 !== $bitLen) {
//If the bit length has fallen below 5, shift left 8 and add the next character.
if ($bitLen < 5) {
$val = $val << 8;
$bitLen += 8;
$n++;
$val += $chars[$n];
}
$shift = $bitLen - 5;
$encoded .= ($n - (int)($bitLen > 8) > $len && 0 == $val) ? '=' : $alphabet[$val >> $shift];
$val = $val & ((1 << $shift) - 1);
$bitLen -= 5;
}

return strtolower($encoded);
}
return strtolower($encoded);
}

}
50 changes: 29 additions & 21 deletions src/Base36.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,36 @@

class Base36{

public static function decode(string $base36): string{
$hex = BaseUtil::str_baseconvert(strtolower($base36),36,16);
foreach(str_split($base36) AS $chunk){
if($chunk!=="0"){
break;
}
$hex = '00'.$hex;
}
return hex2bin($hex);
}
/**
* @param string $base36
* @return string
*/
public static function decode(string $base36): string{
$hex = BaseUtil::str_baseconvert(strtolower($base36),36,16);
foreach(str_split($base36) AS $chunk){
if($chunk!=="0"){
break;
}
$hex = '00'.$hex;
}
return hex2bin($hex);
}

public static function encode(string $data): string{
$hex = bin2hex($data);
$base36 = BaseUtil::str_baseconvert($hex,16,36);
foreach(str_split($data) AS $chunk){
if($chunk!=="\0"){
break;
}
$base36 = '0'.$base36;
}
/**
* @param string $data
* @return string
*/
public static function encode(string $data): string{
$hex = bin2hex($data);
$base36 = BaseUtil::str_baseconvert($hex,16,36);
foreach(str_split($data) AS $chunk){
if($chunk!=="\0"){
break;
}
$base36 = '0'.$base36;
}

return $base36;
}
return $base36;
}

}
Loading

0 comments on commit d500c94

Please sign in to comment.