Windows EXE文件附有版本号,由四个以点分隔的数字组成(例如1.0.0.0)。
问题:比较这些数字的正确方法是什么?特别是,1.15.0.0> 1.2.0.0(自15> 2)或反之(从数学角度看,1.15 <1.2)?
背景:我的一个应用程序已达到3.9。*我想知道我可以继续3.10。*没有安装程序或其他组件比较版本号导致麻烦。
答案 0 :(得分:3)
正确的方法是将每个组件(由句点'。'分隔)依次视为数字而不是字符串值。那么,是的1.15.0.0是&gt; 1.2.0.0
如果您使用Powershell,它有一个内置的版本对象(基于.NET的System.Version
类型):[version]
将为您执行此功能。
[仅供参考,各个组件为Major.Minor.Build.Revision
]
答案 1 :(得分:1)
如MSDN at this page中所述:
版本由两个32位整数组成,由四个16位定义 整数。
这意味着,给定两个版本的格式&#34; Major.Minor.Release.Build&#34;,您可以确信您总是有足够的数据将它们组装成64位无符号整数像这样的价值观:
int64_t i1 = (v1->Major << 48) | (v1->Minor << 32) | (v1->Release << 16) | v1->Build;
int64_t i2 = (v2->Major << 48) | (v2->Minor << 32) | (v2->Release << 16) | v2->Build;
所以你现在可以只比较两个64位值,如:
if (i1 > i2) { ... }
很抱歉在5年后解决它,但我四处走动......