PHP:10進数を64進数にエンコード・デコードする。
目次
サンプル見つけたのメモ。
すばらしい(涙)
<?php function dec_to_b64($decnum) { $chars = array_merge(range(0,9),range('A','Z'),range('a','z'),array('+','/')) ; $result = '' ; for (; $decnum > 0; $decnum = floor($decnum/64)) { $result = $chars[$decnum%64].$result ; } return $result == '' ? '0' : $result ; } function b64_to_dec($b64num) { $chars = array_flip(array_merge(range(0,9),range('A','Z'),range('a','z'),array('+','/'))) ; $digits = array_reverse(preg_split('//',$b64num, -1, PREG_SPLIT_NO_EMPTY)) ; $result = 0 ; for($i = 0; $i < count($digits); ++$i) { if (!$chars[$digits[$i]]) return false ; $result += pow(64, $i) * $chars[$digits[$i]] ; } return $result ; } $dec = 1234567890 ; $b64 = dec_to_b64($dec) ; echo "<div class=\"block_1\">" ; echo "<p>10進数:".$dec."\n</p>" ; echo "<p>10進数を64進数に変換:".$b64."\n</p>" ; echo "<p>64進数を10進数にデコード:".b64_to_dec($b64)."\n</p>" ; echo "<p>64進数\"Hoshiya\"を10進数にデコード:".b64_to_dec('Hoshiya')."</p>" ; echo "</div>" ; ?>
ちょっといじくったけど、以下がその結果。
10進数:1234567890
10進数を64進数に変換:19bWBI
64進数を10進数にデコード:1234567890
64進数"Hoshiya"を10進数にデコード:1222835621668