- class Test3
- {
- public static void main(String[] args)
- {
- int n=170; //10011
-
- //toBinary(n);
-
- //toOctal(n);
- toHex(n);
- /*
- 输出效果:19的二进制表示形式:10011
- 要得到这个效果,可以将每次操作后得到的值保存到数组中,最后将数组的元素打印出来.
- */
- }
- //转换成十六进制
- public static void toHex(int n){
- char[] arr=new char[8];
- int index=0;
-
- while(true){
- int code=n%16; //1
- /*
- 因为16进制中没有10,11,12,13,14,15 而是用a,b,c,d,e,f来代表
- */
- char c=0;
- if(code>9){
- c=(char)(code-10+'a'); //13-10+'a'==99 强转 'c'
- }else{
- c=(char)(code+'0'); //1+'0'==49 强转 '1'
- }
-
- arr[index++]=c; //index++是为了将下一个得到的值保存到数组的下一个位置
- n=n/16;
- if(n<16){
-
- arr[index]=(n>9)?(char)(n-10+'a'):(char)(n+'0');
- break;
- }
- }
- for(int i=index;i>=0;i--){
-
- System.out.print(arr[i]);
- }
- }
- //转换成八进制
- public static void toOctal(int n){
- int[] arr=new int[11];
- int index=0;
-
- while(true){
- int code=n%8; //1
- arr[index++]=code; //index++是为了将下一个得到的值保存到数组的下一个位置
- n=n/8;
- if(n<8){
- arr[index]=n;
- break;
- }
- }
- for(int i=index;i>=0;i--){
-
- System.out.print(arr[i]);
- }
- }
- //n代表的是要转换的数字 转换二进制
- public static void toBinary(int n){
- int[] arr=new int[32];
- int index=0;
-
- while(true){
- int code=n%2; //1
- arr[index++]=code; //index++是为了将下一个得到的值保存到数组的下一个位置
- n=n/2;
- if(n<2){
- arr[index]=n;
- break;
- }
- }
- for(int i=index;i>=0;i--){
-
- System.out.print(arr[i]);
- }
- }
- }
复制代码 |