如何在PHP上使用64位整數的二進制字符串base64編碼?在PHP 64位整數的二進制值的base64編碼不起作用
此代碼不能按預期工作
<?PHP
$t=11545152599186258990;
$byte_array_t = pack('P',$t);
echo base64_encode($byte_array_t); //not correct result - it should be: LrwswB6fOKA=
echo '
';
$t=11;
$byte_array_t = pack('P',$t);
echo base64_encode($byte_array_t); //correct
我這樣做是因爲我想在PHP中實現下面的代碼(golang):
package main
import (
"fmt"
"encoding/base64"
"encoding/binary"
)
func main() {
dst := make([]byte, 8)
binary.LittleEndian.PutUint64(dst, uint64(11545152599186258990))
value :=base64.URLEncoding.EncodeToString(dst)
fmt.Println(value)
}
PHP沒有無符號整數類型,因此'11545152599186258990'溢出了整數並默默地轉換爲'float(1.1545152599186E + 19)'。 – JimB
謝謝。有沒有辦法在PHP中獲得11545152599186258990的二進制值? –
你是如何得到這個數字的?你可以將它打包爲2個32位數字,但是它可能仍然會在代碼中的其他位置轉換爲浮點數。我根本不知道PHP,但可能會有一些大的整數庫或可以使用的東西。 – JimB