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

Java十六进制转二进制函数问题:需输出完整8位字节

十六进制转8位二进制补前导零的解决办法

你的问题是当前Java函数转换十六进制字符串时,返回的二进制缺少前导零,比如输入"3C"得到"111100",但需要8位的"00111100"。以下是几种可行的修改方案:

方案1:用String.format补前导零

直接在转换后的二进制字符串基础上,通过格式化补全到8位,将填充的空格替换为0:

public static String hexToBinary(String hex) {
    int i = Integer.parseInt(hex, 16);
    String bin = Integer.toBinaryString(i);
    // 格式化字符串到8位,空格填充后替换为0
    return String.format("%08s", bin).replace(' ', '0');
}

方案2:结合位运算确保取低8位(更严谨)

如果输入的十六进制可能超过2位(对应8位二进制),可以先通过位运算保留低8位,再格式化输出:

public static String hexToBinary(String hex) {
    int i = Integer.parseInt(hex, 16);
    // 保留低8位,避免高位数值干扰
    int byteValue = i & 0xFF;
    // 格式化8位二进制,自动补前导零
    return String.format("%8s", Integer.toBinaryString(byteValue)).replace(' ', '0');
}

方案3:手动计算补零长度

通过计算当前二进制字符串的长度,补充对应数量的前导零;如果长度超过8位则截取最后8位:

public static String hexToBinary(String hex) {
    int i = Integer.parseInt(hex, 16);
    String bin = Integer.toBinaryString(i);
    // 计算需要补的零的数量
    int leadingZeros = 8 - bin.length();
    if (leadingZeros > 0) {
        return "0".repeat(leadingZeros) + bin;
    }
    // 长度超过8位时取最后8位
    return bin.substring(bin.length() - 8);
}

测试以上任一方法,输入"3C"都会返回00111100,满足需求。

内容的提问来源于stack exchange,提问作者Rawan Khedr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:50:17