首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

版本号大小比较

背景:

移动开发过程中,许多场景需要用到版本号的比较,根据版本号的大小做不同的逻辑。

最近我们在做一个后台分发功能,简单说是后台判断客户端传过来的版本号,用版本号做比较判断的逻辑,然后返回合适的数据给请求者。

iOS客户端的版本号传给后台的可能是2段,3段例如2.3,1.2.1,一般不会出现4段和5段的情况。

而Android可能是3段或者4段。例如三段1.3.0,四段 1.10.1.4等。

遵守原则:

1. 版本号最多四位(可能2位,3位,4位)

2. 版本号最大不超过99

方案:

在二大原则基础上给出方案

1. 把不足四位的版本号,做补充成四位处理,末尾补0。

 例如下方的四种情况:

     0.1 -> 0.1.0.0

     1.0 -> 1.0.0.0

     1.0.0 -> 1.0.0.0

     2.0 -> 2.0.0.0

2. 转换:

从左到右,分别是第一位,第二位,第三位,第四位:

第一位乘以 10的6次方,

第二问乘以 10的4次方,

第三位乘以 10的2次方,

第四位乘以 10的0次方。

例如:1.0.0 转换成: 1000000

例如 2.0 转换为 2000000

例如 3.1 转换为 3010000

例如 1.18.5 转换为 1180500

例如 1.18.5.0 转换为 1180500

总结

当然做基于纯字符串的比较也是可以的。不过好多市面上用的字符串比较版本号好多方法大多是错的,很多情况没有覆盖到。

把客户端字符串转换成整数来判断,是符合当前业务场景的。

局限性:

转换为数字比较,确实存在的局限性,例如超过4段怎么处理,有一段数字大约99怎么办?

万事都有原则不是,在遵循原则的基础上,用最简单,最容易理解的方案就是最好的。

你有其他的方案吗?

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180601G1WPQY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券