string getAlphabetEncoding(num){
//some logic
return strForNum;
}
輸入的函數:1輸出:一個,輸入:5輸出:即,輸入:27輸出:AA,輸入:676輸出:YZ,輸入:677輸出:ZA ..
string getAlphabetEncoding(num){
//some logic
return strForNum;
}
輸入的函數:1輸出:一個,輸入:5輸出:即,輸入:27輸出:AA,輸入:676輸出:YZ,輸入:677輸出:ZA ..
試試這個:
var ABC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
function getNameFromNumber(num) {
var numeric = (num - 1) % 26;
var letter = ABC[numeric];
var num2 = parseInt((num - 1)/26);
if (num2 > 0) {
return getNameFromNumber(num2) + '' + letter;
} else {
return letter;
}
}
var data = document.getElementById('data');
data.innerHTML += 1 + ' -> ' + getNameFromNumber(1) + '<br>'; //A
data.innerHTML += 5 + ' -> ' + getNameFromNumber(5) + '<br>'; //E
data.innerHTML += 27 + ' -> ' + getNameFromNumber(27) + '<br>'; //AA
data.innerHTML += 676 + ' -> ' + getNameFromNumber(676) + '<br>'; //YZ
data.innerHTML += 677 + ' -> ' + getNameFromNumber(677) + '<br>'; //ZA
<div id=data></div>
我認爲你正在嘗試從Base 10轉換到Bijective Base 26(電子表格列符號),否則稱爲hexavigesimal系統。
您將JavaScript列爲感興趣的語言,因此我已將其定位。下面的代碼執行該轉換,但請注意,輸出不是您在問題中提出的建議。我用我的電子表格程序驗證了它們,發現它們是正確的,所以我假設我們問題中的值是錯誤的。
Number.prototype.toBijectiveBase26 = (function() {
return function toBijectiveBase26() {
n = this
ret = "";
while(parseInt(n)>0){
--n;
ret += String.fromCharCode("A".charCodeAt(0)+(n%26));
n/=26;
}
return ret.split("").reverse().join("");
};
}());
Number(1).toBijectiveBase26(); //Returns A
Number(5).toBijectiveBase26(); //Returns E
Number(27).toBijectiveBase26(); //Returns AA
Number(676).toBijectiveBase26(); //Returns YZ
Number(677).toBijectiveBase26(); //Returns ZA
「Bijective base」 - 「今天學到了新東西,謝謝。 –
的JavaScript,Java和PHP? –
http://stackoverflow.com/help/how-to-ask –
@Tushar:這是電子表格程序(如Excel)標記列的方式。前26個數字用單字母名稱表示,接下來的26x26數字用兩個字母的名稱表示,等等。 –