常見作業系統:
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