本文主要是介绍小白教你进制转换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
进制转换
题目描述:
给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
示例:
输入:7,2
输出:“111”
备注:
M是32位整数,2<=N<=16.
题目链接:
进制转换
思路:
我们先想一想我们10进制数是如何转换成其他进制的?
比如10进制转2进制:
我们手写一下十进制数7转换为二进制:
我们再来看一下十进制数7转换为二进制
现在我们知道我们的十进制转其他进制是由该十进制数除以转的进制数取余数,然后再用其商除以转的进制数取余数,知道商为0,然后从下到上依次读取的结果。
我们再来考虑一个问题,如果该数为负数我们该怎么转换呢?
十进制的负数转换为其他进制就是该数的正数转换为其他进制后在到前面加个负号。
超过10的数我们用什么来代替呢?
超过十的数我们应该用ABCDEF来代替。
好了,问题考虑周全后我们来撸代码吧。
代码:
import java.util.*;public class Solution {/*** 进制转换* @param M int整型 给定整数* @param N int整型 转换到的进制* @return string字符串*/public String solve (int M, int N) {// write code hereif (N == 0)return "0";//如果N为0就直接放回boolean flag = false;//判断M是否为负数的标志if (M < 0){flag = true;M = -M;//为负数,则先把它转换为正数}String number = "0123456789ABCDEF";//对应进制某一位StringBuffer sb = new StringBuffer("");while (M != 0) {sb.append(number.charAt(M % N));//添加M除以N取余M = M / N;//取商}if (flag) {sb.append("-");}String res = sb.reverse().toString();//完成字符串翻转后,StringBuffer转换为String类型return res;}
}
这篇关于小白教你进制转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!