32位、64位对api的影响:Andriod、iOS、JavaScript等
常见操作系统:
Android:只有32位
iOS:只有32位
Linux server(CentOS、Ubuntu、RedHat等):64位(大部分公司服务器使用)、32位(已淘汰)
Windows PC:64位,32位
常见软件:
Android app:java或c++。如果用java,os无关,则int是64位。如果用c++,待验证。
iOS app:object c,os有关。int是32位。
php:os有关。编译安装与server相同,int为64位或32位。
mysql:os无关。int为64位。
32位浏览器(chrome、firefox)中的JavaScript:约9千万亿,待定,未找到权威文档
64位浏览器(waterfox)中的JavaScript:约9千万亿,待定,未找到权威文档
var a = 9000000000000001;alert(a -1 + 1);
对api程序开发的影响:
通过php开发api提供json给app、浏览器js引擎使用时,由于php的web server是64位的,而Android、iOS、浏览器js的int范围不一致。
32位int大概为21亿,比如网盘的用户总容量为5GiB,php接口返回数据如下:
{
"capacity" : 5368709120, //容量53亿Byte,即5GiB,超过了21亿
"used_space" : 1073741824
}
结果:Android Java app正常,iOS app无法处理数据,浏览器JavaScript正常。
所以需要使用string,而不是int,iOS拿到之后再做大整数相除即可。即:
{
"capacity" : "5368709120",
"used_space" : "1073741824"
}
参考资料:
http://www.cnblogs.com/sink_cup/archive/2010/12/12/php_intval_mysql_int.html