java 16进制与10进制互相转换

发布时间:2024年01月05日

十六进制是一种表示数字的进位制方法,可以表示09以及AF共16个字符,十六进制通常用于计算机中数据的表示,如内存地址等

10进制转16进制

Integer x = 666;
String hex = x.toHexString(x);
System.out.println(hex);

打印出来的信息是“29a”,需要注意这里转换完的hex是字符串,值是16进制的一个数;

16进制转10进制

分为两种情况一般我们遇到都是第一种

1)1A

2)0xfff;?

第一种好办,直接如下:

public class HexToDecimal {
    public static void main(String[] args) {
        String hexString = "1A"; // 这是一个16进制的数字
        int decimal = Integer.parseInt(hexString, 16);
        System.out.println("The number " + hexString + " in decimal is: " + decimal);
    }
}

在这个例子中,"1A"是一个16进制的数字,Integer.parseInt(hexString, 16)会将其转换为10进制的整数。第二个参数16指定了基数为16,即告诉parseInt方法输入的字符串是16进制的。运行上述程序,会输出:

The number 1A in decimal is: 26

因为16进制的1A等于10进制的26

第二种呢,用上述方法就行不通了,因为会将“x”当做16进制的数进行转换,0xfff是一种在许多编程语言中包括Java表示十六进制数的标准格式。这里的 0x 前缀表示随后的字符是十六进制数字。fff 在十六进制中是个有效的数值,显然”0x”不属于16进制里的表示。所以得想个办法判断字符串是否有0x,把前面的“0x”去掉。然后在执行上述方法

String hex = "0xfff";
Integer x = Integer.parseInt(hex.substring(2),16);//从第2个字符开始截取
System.out.println(x);

------------------------------------------与正文内容无关------------------------------------
如果觉的文章写对各位读者老爷们有帮助的话,麻烦点赞加关注呗!小弟在这拜谢了!
如果您觉得我的文章在某些地方写的不尽人意或者写的不对,从而让你对你人生观产生颠覆(概不负责),需要斧正,麻烦在评论区不吝赐教,作者看到后会根据您的提示查阅文章进行修改,还这世间一个公理一片蓝天

文章来源:https://blog.csdn.net/weixin_43895362/article/details/135397373
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。