java 二進制與十六進制相互轉換


1.情景展示

2進制如何轉16進制?

16進制如何轉成2進制?

2.具體分析

二進制:用0和1表示(最高位為符號位,“0”表示正,“1”表示負,其余位表示數值的大小);

十六進制:10個阿拉伯數字(0~9)和6個英文字母(a~f)共計16個字符表示。

3.解決方案

二進制轉十六進制

/*
 * 二進制轉十六進制
 * @description:
 * @date: 2022/4/1 16:11
 * @param: binary 二進制
 * @return: java.lang.String 16進制字符串
 */
@NotNull
public static String toHexString(String binary) {
    if (StringUtils.isEmpty(binary) || binary.length() % 8 != 0) return "";

    StringBuilder hex = new StringBuilder();
    int iTmp;
    for (int i = 0; i < binary.length(); i += 4) {
        iTmp = 0;
        for (int j = 0; j < 4; j++) {
            iTmp += Integer.parseInt(binary.substring(i + j, i + j + 1)) << (4 - j - 1);
        }
        hex.append(Integer.toHexString(iTmp));
    }

    log.debug("二進制轉十六進制:\n{}", hex);

    return hex.toString();
}

十六進制轉二進制

/*
 * 十六進制轉二進制
 * @description:
 * @date: 2022/4/1 15:03
 * @param: hex 十六進制字符串
 * @return: java.lang.String 二進制字符串
 */
@NotNull
public static String fromHexString(String hex) {
    if (StringUtils.isEmpty(hex) || hex.length() % 2 != 0) return "";

    StringBuilder binaryString = new StringBuilder();
    String tmp;
    for (int i = 0; i < hex.length(); i++) {
        tmp = "0000" + Integer.toBinaryString(Integer.parseInt(hex.substring(i, i + 1), 16));
        binaryString.append(tmp.substring(tmp.length() - 4));
    }
    log.debug("十六進制轉二進制:\n{}", binaryString);

    return binaryString.toString();
}

測試

toHexString(fromHexString("2Facdfacdfbebb543531"));

 

寫在最后

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM