javascript - PHP 按位异或与 JavaScript 按位异或
问题描述
我正在尝试找到一种方法使PHP Bitwise XOR
结果与JavaScript Bitwise XOR
. 我遇到了这个问题的不同问题,而且都没有答案。这里有几个:
JS 按位异或运算符的作用与 PHP 的对应运算符不同。如何获得与 PHP 返回相同的结果?
我知道与 32 位 JavaScript 相比,PHP 使用的是 64 位,但我的问题是,是否有任何手动方法来计算类似结果?我们怎样才能让 PHP 得到和 JS 一样的结果呢?
如果数字很短,在 JS 和 PHP 中结果总是相同的,但是,如果数字很长,就会出现问题。例子:
var a = 234324234232;
var b = 221312312232;
console.log(a^b);
JS输出:
166587472
PHP代码:
$a = 234324234232;
$b = 221312312232;
echo $a^$b;
PHP 输出:
21641423952
有时 JavaScript 会给出否定的结果:
var a = 202338273;
var b = 523511134400;
console.log(a^b);
JS 输出
-272722143
PHP代码:
$a = 202338273;
$b = 523511134400;
echo $a^$b;
PHP 输出:
523713287969
解决方案
掩码为有符号整数。
$c = ($a ^ $b) & 0xffffffff;
if ($c & 0x80000000)
$c -= 0x100000000;
echo $c;
推荐阅读
- scala - 声明 Dataframe 的 StructType:包含 org.apache.spark.ml.linalg.Vector 的列
- python-3.x - 对内置类型使用自定义验证
- java - Yaml 配置对象列表到属性文件
- c# - 如何在“测试”和“生产”Salesforce Enterprise WSDL Web 参考类之间切换?
- database - 由于超出了允许的最大数据库大小,Oracle 数据库无法打开
- c++ - 如何改进我的文件写入方法以减小 Wavefront Object 文件大小?
- javascript - MongoDB 中的 GET 请求
- neo4j - Neo4j 使用 JACCARD 或 sorensenDiceSimilarity 或类似的东西在节点上查找字符串的相似性
- oauth - 如何在 Nest.js 身份验证流程中传递状态
- javascript - 箭头函数:这个块解释了什么?