zoukankan      html  css  js  c++  java
  • Excel 26机制转换

    【问题描述】

    在Excel中,列的名称是这样一个递增序列:A、B、C、…、Z、AA、AB、AC、…、AZ、BA、BB、BC、…、BZ、CA、…、ZZ、AAA、AAB…。
    我们需要将上述列名序列和以下自然数序列相互转换:1、2、3、…。

    【问题分析】

    经过分析,我们不难发现,这是一个26进制和十进制相互转换的问题。序列A-Z依次对应序列1-26。进制转换的基本办法就是“取余法”,换算规则如下:
    ABZ = 1*26² + 2 * 26¹ + 26*26°= 676 + 52 + 26 = 754
    于是,我们就知道该如何设计一个十进制转换为26进制的算法了。

    【算法描述】
    Step1.[取余] 用指定自然数n除以26,得到一个余数m。如果m = 0,置m←26。
    Step2.[转换为字符] 将m映射为字符c,映射规则是{1-26}->{A-Z}。然后将c拼接到26进制值s的左边,也就是置s←c + s。
    Step3.[去余降幂] 置n←(n–m)/26。如果n > 0,则回到Step1继续执行,否则进入Step4。
    Step4.[结束] 返回s。

    按照上述思想,26进制转换为十进制的过程正好是相反的,而且实现起来也更为简单,在此不述。

  • 相关阅读:
    云计算安全之传统安全业务连续性和灾难恢复
    如何降低云应用程序的风险并管理其保障措施
    映射函数
    numpy用法
    dataframe基础
    list用法
    可视化基础
    pycharm使用技巧
    时间用法
    merge()函数
  • 原文地址:https://www.cnblogs.com/chengpeng15/p/10635431.html
Copyright © 2011-2022 走看看