Java的进制转换操作(十进制、十六进制、二进制)
2014-05-06 17:34 吴文付
最近由于工作上的需要,遇到进制转换的问题。涉及到的进制主要是 十进制,十六进制,二进制中间的转换。
这里整理一下。具体的计划为:封装一个转换类,一个测试类。
1、十进制 转 十六进制 二进制:

//调用java自带的api //测试十进制转16进制 2进制 System.out.println("十进制10转16进制为"+Integer.toHexString(10)); System.out.println("十进制10转二进制为"+Integer.toBinaryString(10));
2、十进制字符串转 16进制 转 2进制
将字符串转为 十进制后参考方法1

System.out.println("字符串10转16进制为"+Integer.toHexString(Integer.parseInt("10")));
System.out.println("字符串10转二进制为"+Integer.toBinaryString(Integer.parseInt("10")));
3、16转2转10

String h = "10000"; BigInteger srch = new BigInteger(h, 16); System.out.println("十六进制字符串10000转为10进制后为:"+srch.toString());//转换为10进制并输出结果 System.out.println("十六进制字符串10000转为2进制后为"+Integer.toBinaryString(Integer.parseInt(srch.toString())));
2014-05-07 15:18 修正:
上面的转换使用了BigInteger对象,也可以不使用。
如下方式也可以
16-》2
可以如下:Integer.toBinaryString(Integer.parseInt("0xAA",16))
16-10:
Integer.parseInt("0xAA",16)
4、2转10转16

String b = "10000"; BigInteger srcb= new BigInteger(b,2);//转换为BigInteger类型 System.out.println("二进制字符串10000转为10进制后为:"+srcb);//转换为10进制并输出结果 System.out.println("二进制字符串10000转为16进制后为"+Integer.toHexString(Integer.parseInt(srcb.toString())));
5、字节数组转 16进制字符串

public static String BinaryToHexString(byte[] bytes){ String hexStr = "0123456789ABCDEF"; String result = ""; String hex = ""; for(int i=0;i<bytes.length;i++){ //字节高4位 hex = String.valueOf(hexStr.charAt((bytes[i]&0xF0)>>4)); //字节低4位 hex += String.valueOf(hexStr.charAt(bytes[i]&0x0F)); result +=hex+" "; //这里可以去掉空格,或者添加0x标识符。 } return result; }
6、16进制字符串转 字节数组

public static byte[] HexStrToBytes(String str) { //如果字符串长度不为偶数,则追加0 if(str.length() % 2 !=0){ str = "0"+str; } byte[] b = new byte[str.length() / 2]; byte c1, c2; for (int y = 0, x = 0; x < str.length(); ++y, ++x) { c1 = (byte)str.charAt(x); if (c1 > 0x60) c1 -= 0x57; else if (c1 > 0x40) c1 -= 0x37; else c1 -= 0x30; c2 = (byte)str.charAt(++x); if (c2 > 0x60) c2 -= 0x57; else if (c2 > 0x40) c2 -= 0x37; else c2 -= 0x30; b[y] = (byte)((c1 << 4) + c2); } return b; }
2014-05-06 18:49 完成测试。
直接上代码吧。注释已经很清楚了
工程地址:http://download.csdn.net/detail/douniwan123654/7305195
测试后截图:
QQ:540045865
热爱生活,热爱编程。
posted on 2014-05-06 17:40 jsRunner 阅读(22405) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)