簡體   English   中英

Javascript 和 PHP Xor 等效項

[英]Javascript & PHP Xor equivalent

我有一個 javascript 代碼:

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

結果是-1907459466

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

我似乎無法獲得等效的 PHP。 嘗試了以下方法:

<?php    
$c=267414715;

$d=$c ^ hexdec("0x81BE16CD");
echo "With hexdec: $d\n";

$d=$c ^ base_convert("0x81BE16CD", 16, 2);
echo "With base_convert(2): $d\n";

$d=$c ^ base_convert("0x81BE16CD", 16, 10);
echo "With base_convert(10): $d\n";
?>

輸出:

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

有人可以指出正確的等效代碼,並解釋不同版本(base_convert / hexdec /“正確”等效在其工作中的不同之處)。

2387507830 == -1907459466 使用無符號整數時(查看最低有效位的位值)

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

您的問題是 32 位翻轉。 為了補償,您可以簡單地 & 0xffffffff 它將最高有效的 32 位清零,並使兩個答案相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM