计算机中采用的是二进制,一个数字可以用任意进制表示。
关键技术剖析:
v Java中在声明数字时默认采用的是十进制,可以在数字前加上符号表示数字采用八进制【前面加0(零)】或者十六进制【前面加上0x(零x)】。
v Java的整型封转类Integer和Long提供toString(int i,int radix)静态方法,可以将一个任意进制的整数转换为其他进制的整数。
v 使用Integer或Long的toBinaryString方法将整数转换为二进制。
v 使用Integer或Long的toOctalString方法将整数转换为八进制。
v 使用Integer或Long的toHexString方法将整数转换为十六进制。
v 使用Integer或Long的toString(int i)方法可以将其他进制的整数转换为十进制的整数的字符串表示。
public class SystemConversion {
public static void main(String[] args) {
int iOct = 0567;//八进制数字的声明,在前面加上0(零)
int iTen = 1000;//十进制数字的声明
int iHex = 0xAbcd;//十六进制数字的声明,在前面加上0x(零x),x和abcd不区分大小写
System.out.println("八进制0567转换成二进制:Integer.toString(iOct, 2)="+Integer.toString(iOct, 2));
System.out.println("八进制0567转换成二进制:Integer.toBinaryString(iOct)="+Integer.toBinaryString(iOct));
System.out.println("八进制0567转换成十进制:Integer.toString(iOct, 10)="+Integer.toString(iOct, 10));
System.out.println("八进制0567转换成十进制:Integer.toString(iOct)="+Integer.toString(iOct));
System.out.println("八进制0567转换成十六进制:Integer.toString(iOct, 2)="+Integer.toString(iOct, 16));
System.out.println("八进制0567转换成十六进制:Integer.toHexString(iOct)="+Integer.toHexString(iOct));
System.out.println();
System.out.println("十进制1000转换成十六进制:Integer.toString(iTen,16)="+Integer.toString(iTen,16));
System.out.println("十进制1000转换成十六进制:Integer.toHexString(iTen)="+Integer.toHexString(iTen));
System.out.println("十进制1000转换成八进制:Integer.toString(iTen,8)="+Integer.toString(iTen,8));
System.out.println("十进制1000转换成八进制:Integer.toOctalString(iTen)="+Integer.toOctalString(iTen));
System.out.println("十进制1000转换成二进制:Integer.toString(iTen,2)="+Integer.toString(iTen,2));
System.out.println("十进制1000转换成二进制:Integer.toBinaryString(iTen)="+Integer.toBinaryString(iTen));
System.out.println();
System.out.println("十六进制0xAbcd转换成十进制:Integer.toString(iHex,10)="+Integer.toString(iHex,10));
System.out.println("十六进制0xAbcd转换成十进制:Integer.toString(iHex)="+Integer.toString(iHex));
System.out.println("十六进制0xAbcd转换成八进制:Integer.toString(iHex,8)="+Integer.toString(iHex,8));
System.out.println("十六进制0xAbcd转换成八进制:Integer.toOctalString(iHex)="+Integer.toOctalString(iHex));
System.out.println("十六进制0xAbcd转换成二进制:Integer.toString(iHex,2)="+Integer.toString(iHex,2));
System.out.println("十六进制0xAbcd转换成二进制:Integer.toBinaryString(iHex)="+Integer.toBinaryString(iHex));
System.out.println();
//还可将任意进制的整数转换成其他任意进制的数字
System.out.println("十六进制0xAbcd转换成七进制:Integer.toString(iHex,7)="+Integer.toString(iHex,7));
}
}
程序输出:
八进制0567转换成二进制:Integer.toString(iOct, 2)=101110111
八进制0567转换成二进制:Integer.toBinaryString(iOct)=101110111
八进制0567转换成十进制:Integer.toString(iOct, 10)=375
八进制0567转换成十进制:Integer.toString(iOct)=375
八进制0567转换成十六进制:Integer.toString(iOct, 2)=177
八进制0567转换成十六进制:Integer.toHexString(iOct)=177
十进制1000转换成十六进制:Integer.toString(iTen,16)=3e8
十进制1000转换成十六进制:Integer.toHexString(iTen)=3e8
十进制1000转换成八进制:Integer.toString(iTen,8)=1750
十进制1000转换成八进制:Integer.toOctalString(iTen)=1750
十进制1000转换成二进制:Integer.toString(iTen,2)=1111101000
十进制1000转换成二进制:Integer.toBinaryString(iTen)=1111101000
十六进制0xAbcd转换成十进制:Integer.toString(iHex,10)=43981
十六进制0xAbcd转换成十进制:Integer.toString(iHex)=43981
十六进制0xAbcd转换成八进制:Integer.toString(iHex,8)=125715
十六进制0xAbcd转换成八进制:Integer.toOctalString(iHex)=125715
十六进制0xAbcd转换成二进制:Integer.toString(iHex,2)=1010101111001101
十六进制0xAbcd转换成二进制:Integer.toBinaryString(iHex)=1010101111001101
十六进制0xAbcd转换成七进制:Integer.toString(iHex,7)=242140