0

私は32ビットphpを搭載したWindows 64ビットで作業していました。base_convert の使用 Centos 64 ビットに 64 ビットの php に移行した後、異なる結果が返されます。例えば:

<?php
    $input = 'f00706ff';
    $result  = (int)base_convert($input,16,10);
    echo $result;
?>

Win64 では PHP32 -> 2147483647;

CentOS64 では PHP64 -> 4026992383;

何か助けはありますか?

4

2 に答える 2

1

16 進値が 32 ビット整数の範囲外 (2147483647 は符号付き整数の基数 10 の最大値) であり、PHP の 32 ビット バージョンを実行していたため、Windows の値が間違っていました。Linuxの結果は正しいです:)

また、Windows で操作を適切に実行したい場合は、GNU Multiple Precision ライブラリ$result = gmp_strval( gmp_init('f00706ff', 16), 10 );を次のように使用できることにも注意してください。控えめに言っても不快です。

于 2012-07-14T02:55:26.460 に答える
0

解決策を見つけました。

<?php
    $input = 'f00706ff';
    $result  = (int)base_convert($input,16,10);
    if($result > 2147483647) $result = 2147483647;
    echo $result;
?>

ここで、2147483647=32ビットのPHP_INT_MAX

于 2012-07-14T05:10:24.407 に答える