给你一个16进制转10进制的。你看看算法思想public static int toTen(String expression){ char []ch = expression.toCharArray(); int sum = 0; for(int i = 0;i < ch.length;i++){ char c = ch[ch.length-1-i]; int value = Character.digit(c, 16); sum += value * (1<<(4*i)); } return sum; }
移位? n*7 == n*(8-1) == n*8 - n == n<<3 - n 这样算不算移位运算?public static int seven2ten(String src) { int num = 0; char[] c = src.toCharArray(); for (int i=0; i<c.length; i++) { num = (num << 3) - num; //也就是 num *= 7; num += (c[i]-'0'); } return num; }System.out.println(seven2ten("123"));
可以参考2个方法
Integer.parseInt(string,radix) 根据radix(进制)转换文本为数据
Integer.toString(int,radix) 根据radix(进制)输出数字的N进制格式
char []ch = expression.toCharArray();
int sum = 0;
for(int i = 0;i < ch.length;i++){
char c = ch[ch.length-1-i];
int value = Character.digit(c, 16);
sum += value * (1<<(4*i));
}
return sum;
}
static String conversion(String inValue,int inRadix,int outRadix)throws NumberFormatException{
return Integer.toString(Integer.parseInt(inValue,inRadix),outRadix);
}
输入是7进制形式的字符串,返回值是int型的10进制整数
n*7 == n*(8-1) == n*8 - n == n<<3 - n
这样算不算移位运算?public static int seven2ten(String src) {
int num = 0;
char[] c = src.toCharArray();
for (int i=0; i<c.length; i++) {
num = (num << 3) - num; //也就是 num *= 7;
num += (c[i]-'0');
}
return num;
}System.out.println(seven2ten("123"));