Java十进制和十六进制相互转换(简单)

270 阅读3分钟

大家好,我是程序员子龙。

十进制转十六进制

  /**
     * 十进制数转十六进制数,不够指定位数就在前面补零。超过位数不截取
     * @param num 十进制数
     * @param digits 位数,转成多少位的十六进制数
     * @return
     */
    public static String decimal2Hex(Integer num,int digits){
        return String.format("%0"+digits+"x",num);
    }
​

String.format()说明

String.format()两个重载方法

format(String format, Object…args):新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。

format(Locale locale, String format, Object… args):使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。

占位符类型

转换符转换符示例说明
%s字符串类型“值得点赞”
%c字符类型‘h’
%b布尔类型true
%d整数类型(十进制)88
%x整数类型(十六进制)FF
%o整数类型(八进制)77
%f浮点类型7.777
%a十六进制浮点类型FF.35AE
%e指数类型9.38e+5
%g通用浮点类型(f和e类型中较短的)基本用不到
%h散列码基本用不到
%d%百分比类型%(%特殊字符%%才能显示%)
%n换行符基本用不到
%tx日期与时间类型基本用不到

示例代码如下:

public static void main(String[] args) {
        String str;
        // %s
        str = String.format("Hi,%s", "Jack");
        // hi,Jack
        System.out.println(str);
        // %c   %n
        str = String.format("字母d的大写是:%c %n", 'D');
        // 字母d的大写是:D
        System.out.println(str);
        // %b
        str = String.format("布尔结果是:%b", 3 > 1);
        // 布尔结果是:true
        System.out.println(str);
        // %d
        str = String.format("50的一半是:%d", 50/2);
        // 50的一半是:25
        System.out.println(str);
        // %x
        str = String.format("100的16进制数是:%x", 100);
        // 100的16进制数是:64
        System.out.println(str);
        // %o
        str = String.format("100的8进制数是:%o", 100);
        // 100的8进制数是:144
        System.out.println(str);
        // %f
        str = String.format("50元的书打6.5折是:%f 元", 50 * 0.65);
        // 50元的书打6.5折是:32.500000 元
        System.out.println(str);
        // %a
        str = String.format("上面打折后价格的16进制数是:%a", 50 * 0.65);
        // 上面打折后价格的16进制数是:0x1.04p5
        System.out.println(str);
        // %e
        str = String.format("上面打折后价格的指数表示是:%e", 50 * 0.65);
        // 上面打折后价格的指数表示是:3.250000e+01
        System.out.println(str);
        // %g
        str = String.format("上面价格的指数和浮点数结果的长度较短的是:%g", 50 * 0.65);
        // 上面价格的指数和浮点数结果的长度较短的是:32.5000
        System.out.println(str);
        // %d%
        str = String.format("上面的折扣是:%d%%", 85);
        // 上面的折扣是:65%
        System.out.println(str);
        // %h
        str = String.format("字母A的散列码是:%h",'A');
        // 字母A的散列码是:41
        System.out.println(str);
    }

常用标识

标识说明
+为正数或负数添加符号
0在数字位数不够的地方补上0
空格在位数不够的地方补上空格
,对数字分组,三位一隔,只可以用于十进制
(使用括号将去掉负号的负数包含进来
#让十六进制的数字加上OX,八进制的数字加上o;辅助%x和%o的使用,相当于一种对数字进制的补充说明提示
<格式化前一个转换符锁描述的参数
-左对齐,不够位数的地方补上空格

十六进制转十进制

   String numHex = "100000";
   System.out.println(Integer.valueOf(numHex, 16));