From fe6c36e18042603bb096d3685fe3988e32331ebf Mon Sep 17 00:00:00 2001 From: haturatu Date: Tue, 10 Dec 2024 21:28:04 +0900 Subject: first commit --- PHP4/base91.php | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 PHP4/base91.php (limited to 'PHP4/base91.php') diff --git a/PHP4/base91.php b/PHP4/base91.php new file mode 100644 index 0000000..ea34f03 --- /dev/null +++ b/PHP4/base91.php @@ -0,0 +1,71 @@ +', '?', '@', '[', ']', '^', '_', '`', '{', '|', '}', '~', '"' +); +$b91_dectab = array_flip($b91_enctab); + +function base91_decode($d) +{ + global $b91_dectab; + $l = strlen($d); + $v = -1; + for ($i = 0; $i < $l; ++$i) { + $c = $b91_dectab[$d{$i}]; + if (!isset($c)) + continue; + if ($v < 0) + $v = $c; + else { + $v += $c * 91; + $b |= $v << $n; + $n += ($v & 8191) > 88 ? 13 : 14; + do { + $o .= chr($b & 255); + $b >>= 8; + $n -= 8; + } while ($n > 7); + $v = -1; + } + } + if ($v + 1) + $o .= chr(($b | $v << $n) & 255); + return $o; +} + +function base91_encode($d) +{ + global $b91_enctab; + $l = strlen($d); + for ($i = 0; $i < $l; ++$i) { + $b |= ord($d{$i}) << $n; + $n += 8; + if ($n > 13) { + $v = $b & 8191; + if ($v > 88) { + $b >>= 13; + $n -= 13; + } else { + $v = $b & 16383; + $b >>= 14; + $n -= 14; + } + $o .= $b91_enctab[$v % 91] . $b91_enctab[$v / 91]; + } + } + if ($n) { + $o .= $b91_enctab[$b % 91]; + if ($n > 7 || $b > 90) + $o .= $b91_enctab[$b / 91]; + } + return $o; +} +?> -- cgit v1.2.3