我的網絡主機報告PHP_INT_MAX是2147483647,即它是32位環境。我試圖轉換當前在64位環境中運行的幾個數學運算,以便它們也可以在32位環境中運行。翻譯幾個> 32位操作以在php 32位環境中工作
$id = '76561197996545192';
$temp = '';
for ($i = 0; $i < 8; $i++)
{
$temp .= chr($id & 0xFF);
$id >>= 8;
}
$result= md5('BE' . $temp);
echo $result;
上面收率de46c6d30bfa6e097fca82f63c2f4f4c
在32位的環境,但它實際上應該得到cd97cc68c1038b485b081ba2aa3ea6fa
(它目前確實在64位的環境)。我猜測bitshift操作符導致了不匹配,但我不確定(我不是一個php專家,也不是數學家,而且我也不是原始代碼的作者:)
BCMath安裝在32位環境中,並且可能還安裝了其他框架(如果需要,我可以檢查phpinfo)。
我該如何解決這個問題?可能嗎?
//萊納斯
編輯:是的,我知道代碼看起來怪異,但它的工作完全按照預期在64位環境。
你可能是對的,我需要仔細檢查一下。現在的問題是如何將$ id聲明爲「更大」的int,而實際上沒有這樣的數據類型。 BCMath可以用於那個嗎? – 2014-11-03 15:09:35