2013-03-25 2 views
-1

в MySQL:PHP/MYSQL преобразования неподписанных Int подписанного Int

select CAST(17640478426339470149 as SIGNED INTEGER); #-806265647370081467 

в PHP:

echo sprintf("%d", 17640478426339470149); #-806265647370082304 

как я доберусь же подписанная Int? (и почему это происходит?)

+0

проверить целочисленный размер и, следовательно, верхние/нижние пределы. – SparKot

+0

На моем 32-битном x86 Windows XP с WAMP я получаю '0' для PHP (4 октета целое число), и MySQL, кажется, использует 8 октетов целое число. – SparKot

+0

Попробуйте 'var_dump (17640478426339470149)' это его, вероятно, двойной, а не int. Это объясняет ошибку в последних цифрах. – Vatev

ответ

0

Я нахожу решение, я не уверен, если он оптимальный, но по крайней мере он работает.

echo gmp_strval(gmp_com(gmp_xor('17640478426339470149', '0xffffffffffffffff'))); 
#-806265647370081467 
Смежные вопросы