Javascript e PHP Xor equivalente

Ho un codice javascript:

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

Il risultato è -1907459466

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

Non riesco a ottenere un equivalente PHP. Ho provato quanto segue:

  

Produzione:

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

Qualcuno può indicare il codice equivalente corretto, e anche spiegare come le diverse versioni (base_convert / hexdec / equivalente “corretto” differiscono nel loro funzionamento).

2387507830 == -1907459466 quando si utilizzano numeri interi non firmati (osservare i valori dei bit dei bit meno significativi)

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 1000 1110 0100 1110 0111 1010 0111 0110

il tuo problema è un rollover a 32 bit. Per compensare puoi semplicemente & 0xffffffff che cancellerà i 32 bit più significativi e renderà le due risposte uguali.