• 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进制转换为十进制的过程正好是相反的,而且实现起来也更为简单,在此不述。

  • 相关阅读:
    NFS 规格严格
    Spring 规格严格
    如何做好软件功能测试 规格严格
    51CTO上不错的文章 规格严格
    一个好网站 规格严格
    系统小贴士 规格严格
    编译Zabbix 规格严格
    JS学习 规格严格
    杂项 规格严格
    MySQL 自增ID 规格严格
  • 原文地址:https://www.cnblogs.com/chengpeng15/p/10635431.html
Copyright © 2020-2023  润新知