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; }
------解决方案-------------------- 7 进制没法移位
------解决方案-------------------- 楼主在哪里有用到7进制?!
------解决方案-------------------- 7进制,很是特别呀。 说起原理,除了笨办法,想不出来其他的了!
------解决方案--------------------
------解决方案-------------------- 表示没遇到过7进制,如果是面试题问的话,可以从二进制转十进制或者8进制转十进制推倒一下。
------解决方案-------------------- 移位? n*7 == n*(8-1) == n*8 - n == n<<3 - n 这样算不算移位运算?
Java code
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"));