不经意间看到网上的一些进制转换算法,发现很多的代码凌乱程度不忍直视。这里贴一下自己以前写的代码,希望对你有所帮助。
注:以下代码其实是一个逻辑,换个参数而已,且均未考虑负数的情况
转二进制(未考虑负数)
public static String toBinaryString(int num) {
StringBuilder res = new StringBuilder();
if (num >= 2) {
do {
res.insert(0, num % 2);
} while ((num /= 2) > 1);
res.insert(0, num);
} else {
res.append(num);
}
return res.toString();
}
转八进制(未考虑负数)
public static String toOctalString(int num) {
StringBuilder res = new StringBuilder();
if (num >= 8) {
do {
res.insert(0, num % 8);
} while ((num /= 8) > 7);
res.insert(0, num);
} else {
res.append(num);
}
return res.toString();
}
转其它进制(未考虑负数)
radix
为转换后的进制,最小为2,最大为10,若为十进制以上,要加字母表映射
radix
为转换后的进制,最小为2,最大为10,若为十进制以上,要加字母表映射
radix
为转换后的进制,最小为2,最大为10,若为十进制以上,要加字母表映射
重要的话说三遍!!!
// 注意 若为十进制以上 要加字母表映射
// 注意 若为十进制以上 要加字母表映射
// 注意 若为十进制以上 要加字母表映射
public static String toOtherRadixString(int num, int radix) {
StringBuilder res = new StringBuilder();
if (num >= radix) {
do {
res.insert(0, num % radix);
} while ((num /= radix) > radix - 1);
res.insert(0, num);
} else {
res.append(num);
}
return res.toString();
}