zoukankan      html  css  js  c++  java
  • 编程算法基础-2.3进制转换

    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;
        }
    }
    BC12
    R12C55
    R5C1
    A5

  • 相关阅读:
    BigInteger与BigDecimal
    Java常用类之时间类
    Java常用类之字符串类
    单例对象 (Singleton)设计模式
    包装类的使用
    Object 类中的主要结构
    PostgreSQL执行计划的解析
    Redis5.0 配置文件中文参考
    jvm系列(六):jvm调优-工具篇
    5,Spark中文件格式、压缩和序列化
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7063004.html
Copyright © 2011-2022 走看看