问题主要出现在这句话上$idx = 0x3FFFFFFF & (1 * ('0x' . $subHex));因为在php7中,十六进制的字符串不再被认为是数字,所以这里所采用的隐式转换变成了无效转换,导致结果出现了问题。可以将此句替换为$idx = 0x3FFFFFFF & hexdec($subHex);
$idx = 0x3FFFFFFF & (1 * ('0x' . $subHex));
php7
十六进制的字符串不再被认为是数字
$idx = 0x3FFFFFFF & hexdec($subHex);