【发布时间】:2017-06-27 06:16:12
【问题描述】:
我想实现这里描述的东西:https://webapps.stackexchange.com/a/101153 in PHP。到目前为止,以下似乎工作:
编码
return rtrim(strtr(base64_encode(pack('Q', $int64)), '+/', '-_'), '=');
解码
$bytes = base64_decode(strtr($data, '-_', '+/'));
return unpack('Q', $bytes)[1];
不幸的是,这只适用于 64 位系统和 PHP5.6.3+,其中引入了“Q”格式的打包/解包。
我必须实现在 php5.5 64 和 32 位上相同的功能吗?
【问题讨论】:
-
'Q' 依赖于机器的字节顺序比较棘手,但这可能会有所帮助:stackoverflow.com/a/41060369/468027
-
感谢@Narf - 我想我可能已经中奖了:php.net/manual/en/function.base-convert.php#106546,很高兴您将其发布为答案,以便我接受?
-
我不太愿意发布不完整的答案。另外,您正在做一些非常具体的事情,这不太可能帮助其他用户......无论如何都应该鼓励每个人升级他们的 PHP 版本。 :)
标签: php integer bit-manipulation backwards-compatibility