/** * Turn a binary back into a long * @param string $b * @return integer * @url http://openidenabled.com Borrowed from PHP-OpenID */ function long($b) { $bytes = array_merge(unpack('C*', $b)); $n = 0; foreach ($bytes as $byte) { $n = bmmul($n, bmpow(2, 8)); $n = bmadd($n, $byte); } return $n; }
function bin($n) { $bytes = array(); while (bmcomp($n, 0) > 0) { array_unshift($bytes, bmmod($n, 256)); $n = bmdiv($n, bmpow(2, 8)); } if ($bytes && $bytes[0] > 127) { array_unshift($bytes, 0); } $b = ''; foreach ($bytes as $byte) { $b .= pack('C', $byte); } return $b; }