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