十六进制XOR与2值在PHP和JavaScript


Hexadecimal XOR with 2 values in PHP and JavaScript

对于这么简单的问题,我就是找不到答案。

JavaScript代码:

var x = -1 ^ 0xF00F9344;

本例中x值为267414715

PHP代码:

$x = -1 ^ 0xF00F9344;

结果为-4027552581

任何想法,如何得到267414715(正确)的结果在PHP?

javascript的位操作总是32位的,而php取决于平台的字长:

在32位平台

$n    = "11110000000011111001001101000100"
-1^$n = "00001111111100000110110010111011"  = 267414715

在64位平台

$n    = "0000000000000000000000000000000011110000000011111001001101000100"
-1^$n = "1111111111111111111111111111111100001111111100000110110010111011" = -4027552581