PHPプログラムに関する各種メモ書き

PHPで大きな値の16進数を10進数に変換する

● PHPで大きな値の16進数を10進数に変換する

通常 hexdec() を使用しますが、大きい値は float で帰ってくるのでその処理をする必要があります。

function bchexdec($hex)
{
    $dec = 0;
    $len = strlen($hex);
    for ($i = 1; $i <= $len; $i++) {
        $dec = bcadd($dec, bcmul(strval(hexdec($hex[$i - 1])), bcpow('16', strval($len - $i))));
    }
    return $dec;
}  
$hash = "FFFFF78001FFFFFF";
$f = bchexdec($hash);
echo $f ."\n";

結果

18446734727894269951

● Message: Call to undefined function bcadd() エラーが出る場合

php-bcmath モジュールが必要です。インストールする必要があります。

https://stackoverflow.com/questions/1273484/large-hex-values-with-php-hexdec

No.1270
07/10 17:34

edit