You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:10:21