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

posted @ 2012-05-25 15:11  sink_cup  阅读(2179)  评论(0编辑  收藏  举报
Creative Commons License

本站原创作品采用知识共享署名 3.0许可协议进行许可。