前言
在用PHP写爬虫的时候,难免会遇到一些Js加密运算,遇到就罢了;关键在于PHP和Js的位移运算结果是不一样,本质上的差别是因为两种语言对数字的处理方式不同;但是很幸运,各位前辈已经造好轮子,在此谢过知了大神~
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
<?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