前言
在用PHP写爬虫的时候,难免会遇到一些Js加密运算,遇到就罢了;关键在于PHP和Js的位移运算结果是不一样,本质上的差别是因为两种语言对数字的处理方式不同;但是很幸运,各位前辈已经造好轮子,在此谢过知了大神~
Code:
<?php
/**
* >>> javascript operator in php x86_64
*
* @param int $v
* @param int $n
*
* @return int
*/
function rrr(int $v, int $n): int
{
return ($v & 0xFFFFFFFF) >> ($n & 0x1F);
}
/**
* >> javascript operator in php x86_64
*
* @param int $v
* @param int $n
*
* @return int
*/
function rr(int $v, int $n): int
{
$v = $v & 0x80000000 ? $v | 0xFFFFFFFF00000000 : $v & 0xFFFFFFFF;
return $v >> ($n & 0x1F);
}
/**
* << javascript operator in php x86_64
*
* @param int $v
* @param int $n
*
* @return int
*/
function ll(int $v, int $n): int
{
$t = ($v & 0xFFFFFFFF) << ($n & 0x1F);
return $t & 0x80000000 ? $t | 0xFFFFFFFF00000000 : $t & 0xFFFFFFFF;
}
/**
* javascript逗号运算符(,)
*
* @param ...
*
* @return mixed
*/
function comma()
{
$args = func_get_args();
return end($args);
}
原文
作者:Neo Peng
地址:https://zhile.io/2018/06/21/php-equivalent-javascript-bitwise-operators.html