0

hexA67BFE427CBDC58Fをint64signed -6450282479763995249に変換する方法は?

function bchexdec($hex) {
 if(strlen($hex) == 1) {
     return hexdec($hex);
 } else {
     $remain = substr($hex, 0, -1);
     $last = substr($hex, -1);
     $x = bcadd(bcmul(16, bchexdec($remain)), hexdec($last));
     return $x;
 }

bchexdec('A67BFE427CBDC58F')== 11996461593945556367.これは正しいですが、sign((unsignedからsignedに変換するにはどうすればよいですか?)

PHP 5.3+; PHP_INT_SIZE == 4

4

1 に答える 1

1
if(bccomp($x, bcpow(2, 63)) >= 0) {
    $x = bcsub($x, bcpow(2, 64);
}
于 2013-02-10T02:15:07.057 に答える