我想在PHP中使用GNU MP的函數gmp_random()。 我需要設置我想要的位的確切值(例如一個64位長度的隨機數)。PHP:在GNU MP中獲取「每肢的位數」MP
限制器參數乘以「每肢位數」。我怎樣才能得到這個價值? 這是相當於CPU的位數還是有任何PHP函數來獲取值?
在原始庫中,它由const mp_bits_per_limb表示。
我想在PHP中使用GNU MP的函數gmp_random()。 我需要設置我想要的位的確切值(例如一個64位長度的隨機數)。PHP:在GNU MP中獲取「每肢的位數」MP
限制器參數乘以「每肢位數」。我怎樣才能得到這個價值? 這是相當於CPU的位數還是有任何PHP函數來獲取值?
在原始庫中,它由const mp_bits_per_limb表示。
似乎沒有簡單的方法來解決這個問題。
你可以假裝mp_bits_per_limb等於PHP_INT_SIZE * 8,只是使用它(將在大多數,但不是所有的體系結構上工作)。由此產生的錯誤將是艱難的,對任何開發人員來說都是值得調試的。所以這可能是要走的路:)
或者通過知道mp_bits_per_limb不會小於16來解決這個問題,所以你只是使用「number_of_bits_you_want/16」,得到的結果有太多的位,而gmp_and( )你的結果爲0xFFFF,0xFFFFFFFF或0xFFFFFFFFFFFFFFFF,將其削減爲16,32或64位。
我寫了立即修復補丁:https://bugs.php.net/bug.php?id=62375
該補丁將在PHP註冊常數「GMP_LIMB_BITS」。