PHP/MYSQL将无符号整型转换为有符号整型


PHP/MYSQL converting unsigned int to signed int

in mysql:

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

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

如何得到相同的符号整型?(以及为什么会出现这种差异?)

我找到了解决方案,我不确定,如果它是最优的,但至少它有效。

echo gmp_strval(gmp_com(gmp_xor('17640478426339470149', '0xffffffffffffffff')));
#-806265647370081467