进制转换
/** * 将十进制数转为任意进制 * * @param num 十进制数 * @param base 目标进制 * @return */ public static String baseString(int num, int base) { if (base > 16) { throw new RuntimeException("进制数超出范围,base<=16"); } StringBuffer str = new StringBuffer(""); String digths = "0123456789ABCDEF"; Stack<Character> s = new Stack<Character>(); while (num != 0) { s.push(digths.charAt(num % base)); num /= base; } while (!s.isEmpty()) { str.append(s.pop()); } return str.toString(); } /** * 16进制内任意进制转换 * * @param num 原进制数 * @param srcBase 原进制 * @param destBase 目标进制 * @return */ public static String baseNum(String num, int srcBase, int destBase) { if (srcBase == destBase) { return num; } String digths = "0123456789ABCDEF"; char[] chars = num.toCharArray(); int len = chars.length; if (destBase != 10) { //目标进制不是十进制 先转化为十进制 num = baseNum(num, srcBase, 10); } else { int n = 0; for (int i = len - 1; i >= 0; i--) { n += digths.indexOf(chars[i]) * Math.pow(srcBase, len - i - 1); } return n + ""; } return baseString(Integer.valueOf(num), destBase); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了