16进制与10进制详解
在十进制系统中,我们使用基数为10的数,即0到9。而在十六进制系统中,基数为16,使用的数字是0到9和字母A到F,其中A代表10,B代表11,C代表12,D代表13,E代表14,F代表15。十六进制是一种表示数字的进位制方法,十六进制通常用于计算机中数据的表示,如内存地址等。
手动算16进制
-
除以16并获取余数:
- 首先,将十进制数除以16。
- 将得到的余数记录下来。如果余数大于9,使用相应的字母(例如,10用A表示,11用B表示,依此类推)。
-
获取商:
- 然后,取除法的整数商。
-
重复以上步骤:
- 对得到的商重复进行除以16并获取余数的步骤,直到商为0。
-
组合余数:
- 最后,将所有余数倒序排列,这就是最终的十六进制数。
示例
将十进制数 287
转换为十六进制数:
- 287 ÷ 16 = 17 余 15,十六进制中15用F表示。
- 17 ÷ 16 = 1 余 1。
- 1 ÷ 16 = 0 余 1。
将余数倒序排列(1, 1, F),所以十进制数287对应的十六进制数为 11F
。
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);
------------------------------------------与正文内容无关------------------------------------
如果觉的文章写对各位读者老爷们有帮助的话,麻烦点赞加关注呗!作者在这拜谢了!
混口饭吃了!如果你需要Java 、Python毕设、商务合作、技术交流、就业指导、技术支持度过试用期。请在关注私信我,本人看到一定马上回复!