Comment utiliser le codage base64 avec une chaîne binaire de 64 bits entiers sur PHP?L'encodage base64 de la valeur binaire d'un entier de 64 bits en PHP ne fonctionne pas
Ce code ne fonctionne pas comme prévu
<?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
Je fais cela parce que je suis en train de mettre en œuvre le code ci-dessous (de golang) en PHP:
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 n'a pas de type entier non signé, donc '11545152599186258990' déborde l'entier et est converti silencieusement en' float (1.1545152599186E + 19) '. – JimB
Merci. Est-il possible d'obtenir la valeur binaire de 11545152599186258990 en PHP? –
Comment obtenez-vous le numéro en premier lieu?Vous pouvez l'emballer comme 2 nombres de 32bit, mais alors il est susceptible d'être encore converti en flotteur dans d'autres endroits dans le code. Je ne connais pas du tout le PHP, mais il peut y avoir une grande bibliothèque de nombres entiers ou quelque chose avec lequel vous pouvez travailler. – JimB