Skip to content

Instantly share code, notes, and snippets.

@xeoncross
Forked from jsjohnst/base58.php
Created February 25, 2014 16:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xeoncross/9212857 to your computer and use it in GitHub Desktop.
Save xeoncross/9212857 to your computer and use it in GitHub Desktop.
<?php
class base58
{
static public $alphabet = "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";
public static function encode($int) {
$base58_string = "";
$base = strlen(self::$alphabet);
while($int >= $base) {
$div = floor($int / $base);
$mod = ($int - ($base * $div)); // php's % is broke with >32bit int on 32bit proc
$base58_string = self::$alphabet{$mod} . $base58_string;
$int = $div;
}
if($int) $base58_string = self::$alphabet{$int} . $base58_string;
return $base58_string;
}
public static function decode($base58) {
$int_val = 0;
for($i=strlen($base58)-1,$j=1,$base=strlen(self::$alphabet);$i>=0;$i--,$j*=$base) {
$int_val += $j * strpos(self::$alphabet, $base58{$i});
}
return $int_val;
}
}
<?php
include("base58.php");
echo "http://flic.kr/p/" . base58::encode(3392387861) . "\n";
// outputs: http://flic.kr/p/6aLSHT
echo "3392387861 = " . base58::decode(base58::encode(3392387861)) . "\n";
// outputs: 3392387861 = 3392387861
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment