编程算法基础-2.3进制转换

来源:互联网 发布:php curl post header 编辑:程序博客网 时间:2024/05/23 02:06

2.3进制转换

使用int存一个整数时,内存中是用二进制存储的,当要显示的时候,用十进制显示。

任意进制间的转换

n进制转m进制

String s = “2001201102”

3进制转换为5进制

 

先转换为2进制,再转换为5进制

/*任意进制间的转换n进制转m进制String s = “2001201102”3进制转换为5进制 先转换为10进制,再转换为5进制*/ package BinaryTrans; public class NToM {    public static void main(String[] args) {       String s = "2001201102";//三进制的一个串       int STARTSystem = 3;       int ENDSystem = 5;             //把三进制的串转换为真值,并且用十进制显示       int n = 0;        for(int i=0;i<s.length();i++){           char c = s.charAt(i);           n = n*STARTSystem + (c -'0');//将三进制转换为十进制,十位:以一当三       }          /*  n=14235;       n % 10 -->5       n = n/10;       n % 10 -->3       n = n/10       ......*/       String s2 = "";       while(true){           s2 = n%ENDSystem + s2;//五进制转换           n = n/ENDSystem;           if(n==0) break;       }       System.out.println(s2);    }}
2244434

Excel单元格转换

Excel 单元格地址有两种格式:

普通格式,如:A5, BC12

对应的RC格式:R5C1, R12C55

显然,RC格式是直接给出行号和列号

请编程在两种地址格式间转换。

/*Excel单元格转换Excel 单元格地址有两种格式:普通格式,如:A5, BC12对应的RC格式:R5C1, R12C55显然,RC格式是直接给出行号和列号请编程在两种地址格式间转换。*/public class ExcelTranslation {    public static void main(String[] args) {       String s = "BC12";       System.out.println(s);       System.out.println(normalToRC(s));             String s2 = "R5C1";       System.out.println(s2);       System.out.println(RCToNormal(s2));    }       //RC模式转为普通模式    public static String RCToNormal(String s){       s=s.substring(1);//将开头的R去掉       String ss[] = s.split("C");//用C分割串       int column = Integer.valueOf(ss[1]);//将列号转换为真值(十进制)       String s2 = "";       while(true){           s2 = (char)(column%26 + 64) + s2;//转回26进制,输出char类型字母           column = column/26;           if(column==0) break;       }       String result = s2+ss[0];       return result;    }       //普通模式转为RC模式    public static String normalToRC(String s){       int start_digit = 0;//数字的初始位置       for(int i=0;i<s.length();i++){//遍历串,找到分割点           if(Character.isDigit(s.charAt(i))){//得到出现数字的位置i              start_digit=i;              break;//跳出,避免第二次又出现数字           }       }       String column = s.substring(0, start_digit);//得到字母,即列号(二十六进制)       String row = s.substring(start_digit);//得到数字,行号             //将二十六进制转换为十进制       int n=0;       for(int i=0;i<column.length();i++){           char c = column.charAt(i);//得到每一个字母           n = n*26 + (c-64);//将二十六进制转换为十进制,'A'-64=1       }       String resultRC = "R"+row+"C"+n;       return resultRC;    }}
BC12R12C55R5C1A5

0 0