人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP5で10進数から62もしくは64進数への変換をしたいのですが、base_convertでは32進数への変換しか対応していません。
そこで質問なのですが、10進数を62もしくは64進数に変換する良い方法/サンプル等を教えていただけませんでしょうか。

●質問者: hosyuya
●カテゴリ:コンピュータ インターネット
✍キーワード:32進数 対応 進数
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

[1]基数変換 pahoo

一般的な基数変換 アルゴリズムを適用すればいいでしょう。


[2]8進数から変換したら? bathrobe

8進数にして、2桁ずつ取っていけば64進数だよ。

そもそも、どの64文字を使うかも問題だけど。(数字10文字、アルファベットの大文字・小文字(26+26)でも、64文字に足りない)


[3]作ってみた GoldenDawn

Base64 にならって 0?9,A?Z,a?z,+,/ を使う。


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 $b64."\n" ;

echo b64_to_dec($b64)."\n" ;

echo b64_to_dec('Hatena') ;


[4]CからPHPへの変換ができるならば、 rsc96074

「C言語アルゴリズム辞典」にありました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ