Java十进制转十六进制方法及Integer.toHexString调用问题咨询
解决Java中十进制转十六进制的问题
嘿,我来帮你搞定这个问题!先看看你代码里的核心问题——你现在用的是total / 16,这是整数除法取商,50除以16的商确实是3,所以输出"3"是符合这个运算结果的,但你想要的是余数,这时候得用**取模运算符%**才行!
先修正你当前的代码
如果你只是想把50除以16的余数转成十六进制,只需要把除法换成取模:
int total = 50; int resto = total % 16; // 这里用%取余数,50%16=2 String hexResto = Integer.toHexString(resto); System.out.println(hexResto); // 输出"2",这就是你预期的余数对应的十六进制值
两种常见的十进制转十六进制实现方式
1. 直接调用API(最简便)
如果你只是想把整个十进制数转成十六进制,完全不用手动做除法取余,Integer.toHexString()直接就能处理整个数值:
int total = 50; String fullHex = Integer.toHexString(total); System.out.println(fullHex); // 输出"32",这就是50的十六进制表示
2. 手动模拟除法取余过程(符合你想手动计算的需求)
如果你想自己实现十进制转十六进制的逻辑,核心是循环取余、记录余数对应的十六进制字符,最后反转结果(因为取余是从低位到高位得到的):
int total = 50; StringBuilder hexResult = new StringBuilder(); // 处理0的特殊情况 if (total == 0) { hexResult.append("0"); } else { while (total > 0) { int resto = total % 16; // 每次取余数 // 把余数转成十六进制字符,Integer.toHexString会自动处理0-15到a-f的转换 hexResult.append(Integer.toHexString(resto)); total = total / 16; // 更新为商,继续循环 } // 反转字符串,得到正确的高位到低位顺序 hexResult.reverse(); } System.out.println(hexResult.toString()); // 输出"32"
总结一下:Integer.toHexString()方法本身是没问题的,你之前的问题只是把取商的运算当成了取余数,把/换成%就能得到正确的余数十六进制啦!
内容的提问来源于stack exchange,提问作者Kakashi - Sensei
相关产品推荐
相关产品推荐

