PHP 中 64 位整数的二进制值的 base64 编码不起作用

use*_*ksa 5 php base64 encoding go

如何在 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
Run Code Online (Sandbox Code Playgroud)

我这样做是因为我试图在 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)



}
Run Code Online (Sandbox Code Playgroud)

Fuz*_*ree 5

更新

尝试使用gmp_export而不是pack. 确保将整数作为字符串传递给,gmp_init否则它会溢出:

$t = gmp_init("11545152599186258990");
$byte_array_t = gmp_export($t, 8);
echo base64_encode($byte_array_t); // LrwswB6fOKA=
Run Code Online (Sandbox Code Playgroud)

演示