From: Ian Jackson Date: Tue, 25 Jan 2011 15:43:07 +0000 (+0000) Subject: canon: use base64 not base62 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=ce731a187e10da5e81e81c9d49584c85410389e3;p=ypp-sc-tools.git canon: use base64 not base62 --- diff --git a/yarrg/canon b/yarrg/canon index 9ae01e5..35a1778 100755 --- a/yarrg/canon +++ b/yarrg/canon @@ -25,12 +25,16 @@ sub alencodenum ($) { my $res= ''; while ($val || !length($res)) { # allowing empty strings, reusing "0" for 62, doing base63, - # saves 0.5% - my $dig= $val % 62; - $val= ($val-$dig) / 62; - $res = chr($dig + ($dig<10 ? 48 : - $dig<36 ? 97-10 : - $dig<62 ? 65-36 : die $dig)) . $res; + # saves 0.5%, compared to base62 + # actually we do base64 because it'll be faster to compute + my $dig= $val & 63; + $val >>= 6; + $res = ($dig < 10 ? chr(48 + $dig) : + $dig < 36 ? chr(97 + $dig - 10) : + $dig < 62 ? chr(65 + $dig - 36) : + $dig==62 ? '_' : + $dig==63 ? '.' : die $dig). + $res; } return $res; }