Javascript y PHP Xor equivalente

Tengo un código javascript:

var c = 267414715; var d = c ^ ("0x81BE16CD"); 

El resultado es -1907459466

http://jsfiddle.net/4N3JY/1/

Parece que no puedo obtener un equivalente de PHP. Han intentado lo siguiente:

  

Salida:

 With hexdec: 2387507830 With base_convert(2): 9223372036587361092 With base_convert(10): 2387507830 

Alguien puede indicar el código equivalente correcto y también explicar cómo las diferentes versiones (base_convert / hexdec / equivalente “correcto” difieren en su funcionamiento).

2387507830 == -1907459466 cuando se usan enteros sin signo (mire los valores de bit de los bits menos significativos)

2387507830 = 0000 0000 0000 0000 0000 0000 0000 0000 1000 1110 0100 1110 0111 1010 0111 0110 -1907459466 = 1111 1111 1111 1111 1111 1111 1111 1111 0100 1110 1111 0111 1010

Su problema es un rollo de 32 bits. Para compensar puede simplemente & 0xffffffff, que pondrá a 0 los 32 bits más significativos, y hará que ambas respuestas sean iguales.

Intereting Posts