Excel 26機制轉換

 

 

【問題描述】算法

在Excel中,列的名稱是這樣一個遞增序列:A、B、C、…、Z、AA、AB、AC、…、AZ、BA、BB、BC、…、BZ、CA、…、ZZ、AAA、AAB…。
咱們須要將上述列名序列和如下天然數序列相互轉換:一、二、三、…。設計

 

【問題分析】blog

通過分析,咱們不難發現,這是一個26進制和十進制相互轉換的問題。序列A-Z依次對應序列1-26。進制轉換的基本辦法就是「取餘法」,換算規則以下:
ABZ = 1*26² + 2 * 26¹ + 26*26°= 676 + 52 + 26 = 754
因而,咱們就知道該如何設計一個十進制轉換爲26進制的算法了。im

 

【算法描述】
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。db

按照上述思想,26進制轉換爲十進制的過程正好是相反的,並且實現起來也更爲簡單,在此不述。img

相關文章
相關標籤/搜索