Débordement intentionnel d'entiers pour le stockage PostgreSQL
Dans le contexte du stockage des valeurs de hachage uint64, qui dépassent la taille du type de données BIGINT de PostgreSQL (signé 64 bits), une solution courante consiste à convertir le uint64 en int64 en changeant simplement le tapez sans altérer la représentation binaire.
Solution :
i := uint64(0xffffffffffffffff) i2 := int64(i)
En utilisant cette conversion de type, la valeur uint64 est affectée à une variable int64 tout en conservant sa représentation binaire d'origine . Ceci est possible car la conversion ne change pas la représentation en mémoire de la valeur, seulement son type.
Sortie :
18446744073709551615 -1
La conversion d'un uint64 en int64 est toujours réussi, quelle que soit la valeur. Cependant, il est important de noter que la conversion d'une valeur constante entière non typée en int64 peut entraîner une erreur de compilation si elle dépasse la valeur maximale pouvant être représentée par int64 (0x7fffffffffffffff).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!