js将数字转换成字母

数字转换成字母

a=>1;b=>2;.aa=>27等等
这个问题的本质是进制转换,进制转换的原理是

aaaa = 1×26^3 + 1×26^2 + 1×26^1 + 1×26^0 = 18279
abcd = 1×26^3 + 2×26^2 + 3×26^1 + 4×26^0 = 19010

这可以得到字母转换成数字的公式。首先得到字母字符串的长度n,然后单个字符串转换成数字(1-26)。

如abcdef,可知n=6,转换:

1.26^(n-1) +26^(n-2) +26^(n-3) +26^(n-4) +26^(n-5) +26^(n-6)
2. 1×26^(5) + 2×26^(4) + 3×26^(3) + 4×26^(2) + 5×26^(1) + 6×26^(0)

根据这个可以反推出数字转换成字母的计算过程(通过取余去实现,注意余数m为0时要将其重置为26,因为0对应的字母为z),给任意大于0的自然数x有:

const number_to_word = (x) => {
    
    
    let s = "";
    while (x > 0) {
    
    
      let m = x % 26;
      m = m === 0 ? (m = 26) : m;
      s = String.fromCharCode(96 + parseInt(m)) + s;
      x = (x - m) / 26;
    }
    return s;
  });
};

猜你喜欢

转载自blog.csdn.net/jojo1001/article/details/121356564