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)
更新
尝试使用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)
归档时间: |
|
查看次数: |
2682 次 |
最近记录: |