【发布时间】:2011-09-10 19:05:06
【问题描述】:
我想要社区可以设计的最好的例程,它只使用 32 位提供版本号字符串。版本号将包含三个部分:主要、次要和内部版本号。包含 Java 源代码的答案的奖励业力点数。
更新 1
好的,所以为了消除一些混淆,主要和次要字段应该分别用一个 8 位字节表示,并且内部版本号将使用剩余的位。 主要:8位 次要:8位 构建:16 位 字节顺序将是小端。
这些标签表示 java 和/或 c++ 中的答案将优于 python、ruby 等。
更新 2
示例:取一个整数(4 字节),如 101020,并通过算法例程运行它以生成如下输出字符串:0.1.2
Java 解决方案
public static final int versionToInt(int major, int minor, int build) {
int ver = (major << 24) | (minor << 16) | build;
return ver;
}
public static final String versionToString(int ver) {
return String.format("%s.%s.%s", ((ver & 0xff000000) >> 24), ((ver & 0x00ff0000) >> 16), (ver & 0x0000ffff));
}
【问题讨论】:
-
为什么你也把它标记为 C++?
-
struct { unsigned char major, minor; unsigned short build; };? -
这不是一个明确的问题。每个字段有多少位?
-
堆栈上有类似的答案吗?我看了看,我不记得 7 年前我们在源代码中使用的例程。我的问题不仅是为了帮助我,也是为了帮助其他人。