进制转换 Java 代码
一、其他进制字符串转成十进制数字
jdk提供的方法:
Integer.parseInt(String str, int radix); // radix 默认为 10,可不输入
自己写的方法:
/**
* 其他进制转换为十进制数字
*
* @param str 要转换的进制字符串
* @param radix 要转换的进制
* @return 十进制数字
*/
public static int parseInt(String str, int radix) {
// 默认 str 是正常数字
char[] chars = str.toCharArray();
boolean negative = chars[0] == '-';
int result = 0;
int i = chars[0] == '-' || chars[0] == '+' ? 1 : 0;
for (; i < chars.length; i++) {
if (result > Integer.MAX_VALUE / radix ||
(result == Integer.MAX_VALUE / radix && chars[i] - '0' > Integer.MAX_VALUE % radix)) {
// 数字大小越界
}
result *= radix;
result += Character.digit(chars[i], radix);
}
return negative ? -result : result;
}
二、十进制数字转成其他进制
jdk提供的方法:
Integer.toBinaryString(int i); // 转为二进制
Integer.toOctalString(int i); // 转为八进制
Integer.toHexString(int i); // 转为十六进制
自己写的方法:只适合正数,负数待完善。
/**
* 正数十进制转其他进制
*
* @param n 十进制数组
* @param radix 要转换成的进制
* @return 转换后的字符串
*/
public static String toBinary(int n, int radix) {
// chars 数组可定义为常量
char[] chars = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
StringBuilder sb = new StringBuilder();
while (n > 0) {
sb.append(chars[n % radix]);
n /= radix;
}
return sb.reverse().toString();
}
三、二进制、八进制、十六进制互相转换
可以先转成十进制,再转换成对应进制。
本文来自博客园,作者:有点成长,转载请注明原文链接:https://www.cnblogs.com/luwei0424/p/17156763.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?