J'ai une chaîne en PHP (provenant d'une source de données), qui représente un entier non signé formaté de 32 bits. Je dois le stocker dans une base de données MySQL comme signé entier 32 bits, de sorte que plus tard je peux le récupérer de PHP et l'utiliser comme une constante entière (éventuellement négative) signée integer (puisque PHP n'a pas d'entiers non signés). Donc, ce dont j'ai besoin, c'est d'une méthode de conversion, que ce soit pour PHP ou MySQL. Il ne devrait pas être dépendant de la plateforme (pas de problèmes endian/32/64-bit).Comment faire pour convertir un entier de 32 bits de non signé à signé en MySQL ou PHP?
Je sais comment convertir un entier signé en utilisant MySQL non signé:
select CAST((-1062726980 & 0xFFFFFFFF) AS UNSIGNED INTEGER);
+------------------------------------------------------+
| CAST((-1062726980 & 0xFFFFFFFF) AS UNSIGNED INTEGER) |
+------------------------------------------------------+
| 3232240316 |
+------------------------------------------------------+
Mais je ne peux pas le faire fonctionner dans l'autre sens (note: MySQL utilise l'arithmétique 64 bits lorsque vous faites des moulages).
Merci.
Désolé, mais cela ne fonctionnera pas sur certains systèmes 64 bits, où PHP int est 64 bits par défaut. – Alex