一、其他进制字符串转成十进制数字
jdk提供的方法:
Integer.parseInt(String str, int radix); // radix 默认为 10,可不输入
自己写的方法:
/**
* 其他进制转换为十进制数字
*
* @param str 要转换的进制字符串
* @param radix 要转换的进制
* @return 十进制数字
*/
public static int parseInt(String str, int radix) {
// 默认 str 是正常数字
char[] chars = str.toCharArray();
boolean negative = chars[0] == '-';
int result = 0;
int i = chars[0] == '-' || chars[0] == '+' ? 1 : 0;
for (; i < chars.length; i++) {
if (result > Integer.MAX_VALUE / radix ||
(result == Integer.MAX_VALUE / radix && chars[i] - '0' > Integer.MAX_VALUE % radix)) {
// 数字大小越界
}
result *= radix;
result += Character.digit(chars[i], radix);
}
return negative ? -result : result;
}
二、十进制数字转成其他进制
jdk提供的方法:
Integer.toBinaryString(int i); // 转为二进制
Integer.toOctalString(int i); // 转为八进制
Integer.toHexString(int i); // 转为十六进制
自己写的方法:只适合正数,负数待完善。
/**
* 正数十进制转其他进制
*
* @param n 十进制数组
* @param radix 要转换成的进制
* @return 转换后的字符串
*/
public static String toBinary(int n, int radix) {
// chars 数组可定义为常量
char[] chars = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
StringBuilder sb = new StringBuilder();
while (n > 0) {
sb.append(chars[n % radix]);
n /= radix;
}
return sb.reverse().toString();
}
三、二进制、八进制、十六进制互相转换
可以先转成十进制,再转换成对应进制。
标签:radix,Java,进制,int,chars,result,Integer,代码 From: https://www.cnblogs.com/luwei0424/p/17156763.html