数字字符串(任意大小) - >多个整数

Bra*_*rad 3 php mysql 64-bit 32-bit bigint

我遇到了问题,因为我的数据库有BIGINT数据(64位整数),但我运行的PHP版本只有32位.

因此,当我从表中提取值时,我最终得到一个表示基数为10的64位整数的数字字符串.我理想的做法是使用64位整数作为位掩码.所以我需要去两个32位整数(一个代表上半部分,一个代表下半部分)或基数2中的数字字符串.

问题是我不能仅仅将它倍增,因为我的PHP只有32位.我被困了?

Jam*_*lis 6

您可以使用MySQL的位移运算符将64位整数分割为两个32位整数.所以,你可以选择:

select (myBigIntField & 0xffffffff) as lowerHalf,
       (myBigIntField >> 32) as upperHalf
Run Code Online (Sandbox Code Playgroud)