• 编程算法基础-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

  • 相关阅读:
    root用户没有权限编辑其他用户处理
    php中 被遗忘的函数
    erlang file操作(IO编程)
    Linux下的MySQL自动备份脚本
    这就是传说中让理科生沉默,让文科生落泪的文理综合体(转)
    LINUX 忘记root密码
    php中 被遗忘的函数
    分页显示的常用操作方法
    php 接口类:interface
    php垃圾回收机制分析
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7063004.html
Copyright © 2020-2023  润新知