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

标签 php go encoding 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)



}

最佳答案

更新

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

$t = gmp_init("11545152599186258990");
$byte_array_t = gmp_export($t, 8);
echo base64_encode($byte_array_t); // LrwswB6fOKA=

Demo

关于php - PHP 中 64 位整数的二进制值的 base64 编码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46219334/

相关文章:

php - 如何在wordpress插件开发中获得激活的插件列表?

php - 无法在 CGridView 中为寻呼机设置 pageSize - Yii

.net - Rfc2898DeriveBytes 与 golang pbkdf2

我认为 Ruby UTF-16 编码

Java String.codePointAt 返回意外值

Unix/Mac OS X 上的 C++ UTF-8 支持

PHP:我怎么知道函数的调用者?

具有公共(public)列的 Php mysql 回显结果

postgresql - 插入数据库时​​如何忽略嵌入式结构字段?

json - 无法在 gqlgen 中生成标量 JSON