Stringa numerica (formato arbitrario) -> interi multipli
Domanda
Io corro in un problema perché la mia banca dati contiene dati BIGINT (interi a 64 bit), ma la versione di PHP sono in esecuzione è solo a 32 bit.
Così quando gli strappo valore da una tavola alla fine con una stringa numerica rappresenta un numero intero a 64 bit in base 10. Nei avrei idealmente come fare è utilizzare l'intero a 64 bit come una maschera di bit. Così ho bisogno di andare a entrambi i due interi a 32 bit (uno che rappresenta la parte superiore ed una parte inferiore) o una stringa numerica in base 2.
Il problema è che non posso moltiplico fuori perché il mio PHP è solo a 32 bit. Sono bloccato?
Soluzione
È possibile utilizzare MySQL po operatori di spostamento dividere il numero intero a 64 bit in due interi a 32 bit. Quindi, è possibile selezionare:
select (myBigIntField & 0xffffffff) as lowerHalf,
(myBigIntField >> 32) as upperHalf
Altri suggerimenti
Per gestire interi dimensione arbitraria, si hanno due opzioni in PHP: GMP e BC Math metodi.
I credere GMP è più efficiente, utilizzando alcune risorse personalizzate, mentre BC utilizza direttamente le stringhe.
Se non sarà procedante troppi (migliaia o più) di numeri alla volta, si può usare direttamente aC.
Hai alcune opzioni qui: