进制转换--力扣第504题
题目:
给定一个整数,将其转化为7进制,并以字符串形式输出。
分析:
核心就是十进制转换为七进制,做法就是利用/和%这两个运算符,%为了计算当前进制位应该表示为几(从右向左),/是为了从左向右计算在当前的进制位下是否应该继续向左延申,即如果在截止到当前进制位表达不够输入的十进制数,
那就要向左延申进制位,每次延申都会除以7,除以7是因为逢7进位。
比如 100转为7进制数,
100%7=2,100/7=14,当前进制位是七进制数第一位,该位数值是2
14%7=0,14/7=2,当前进制位是七进制第二位,由于余数为0,该位数值为0
此时 2 > 7,停止循环,最终的100的七进制数就是202
具体的代码实现如下:
public String convertToBase7(int num) { if (num < 7 && num > -7){ return num+""; } int flag = 0; if (num < 0){ flag = 1; num = Math.abs(num); } StringBuilder res = new StringBuilder(""); int y = num % 7; int n = num / 7; res = res.append(y); while(n >= 7){ y = n % 7; n = n / 7; res.append(y); } res.append(n); if (flag == 1){ res.append('-'); } return res.reverse().toString(); }
此外,Java很贴心,Integer类自带了有将一个十进制数转为指定进制数,并转换为字符串的函数,即 static String toString(int num, int radix) 可以将一个整数转换为 radix 进制表示的字符串。
public String convertToBase7(int num) { return Integer.toString(num, 7); }