六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 88|回复: 0

32位、64位对api的影响:Andriod、iOS、JavaScript等

[复制链接]

升级  4.67%

64

主题

64

主题

64

主题

举人

Rank: 3Rank: 3

积分
214
 楼主| 发表于 2012-10-25 23:41:36 | 显示全部楼层 |阅读模式
常见操作系统:

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
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表