Java中二进制、八进制、十六进制与十进制的相互转化

昨天写了一篇Java中String、char数组和int之间的互相转换的文章,今天同样记录汇总下刷题常见的进制转化问题。

1 声明二进制、八进制、十六进制的变量

/**
二进制变量的声明以0b为前缀;
八进制变量的声明以0为前缀;
十六进制变量的声明以0x为前缀。
*/
int a = 0b11;   //声明二进制变量
int b = 011;    //声明八进制变量
int c = 11;     //声明十进制变量
int d = 0x11;   //声明十六进制变量
// 直接以十进制的形式打印出来
System.out.println("a:"+a); //3
System.out.println("b:"+b); //9
System.out.println("c:"+c); //11
System.out.println("d:"+d); //17

2 十进制转其它进制

int i = 15;
System.out.println("十进制15对应的二进制为:" + Integer.toBinaryString(i)); // 1111
System.out.println("十进制15对应的八进制为:" + Integer.toOctalString(i)); // 17
System.out.println(i); // 15
System.out.println("十进制15对应的十六进制为:" + Integer.toHexString(i));
// 若需要前缀,即0b,0,0x这些,直接加上即可,
System.out.println("十进制15对应的十六进制为:" +"0x"+ Integer.toHexString(i));
// 若十六进制需要大写,则加一个toUpperCase()
System.out.println("十进制15对应的十六进制为:" +"0x"+ Integer.toHexString(i).toUpperCase());

更新一个十进制转任意进制的,非常有用。

// 将十进制的num转化为6进制,得到的是String类型
int num = 6;
int jinzhi=6;
String str = Integer.toString(num,jinzhi);

3 其它进制转十进制

//直接打印出来就变成了十进制
int a = 0b1111;   //声明二进制变量
int b = 01234;    //声明八进制变量
int c = 0x1234;   //声明十六进制变量
// 二进制的1111
System.out.println(a);//15
// 八进制的1234
System.out.println(b);//668
// 十六进制的1234
System.out.println(c);//4660

//还有一种转换形式,这种形式不能有前缀,否则会报错
int num_1 = 1111;
int num_2 = 1234;
int num_3 = 1234;
int jinzhi_1 = 2;
int jinzhi_2 = 8;
int jinzhi_3 = 16;
int value_1 = Integer.valueOf(num_1+"",jinzhi_1);
int value_2 = Integer.valueOf(num_2+"",jinzhi_2);
int value_3 = Integer.valueOf(num_3+"",jinzhi_3);
System.out.println(value_1);
System.out.println(value_2);
System.out.println(value_3);

猜你喜欢

转载自blog.csdn.net/Awt_FuDongLai/article/details/106643668