在JavaScript中将数字转换为字符

假设我们有一个登录系统,要求用户提供唯一的用户ID来唯一标识他们。并且出于明显的安全原因,我们希望混淆userID以便很难猜测数字。

基本上,我们需要编写两个函数。

  • encode(),

  • 解码()

第一个功能应该将我们的数字输入转换为基本的26个字母映射。第二个函数应该将字母映射转换回原始数字。

尽管这不是很实用,因为大多数散列算法都不提供来回转换,但是出于这个问题的目的,我们不考虑这一点。

例如-如果数字是31,则,

encode(31) = 'ea'
and, decode('ea') = 31

示例

为此的代码将是-

const num = 31;
const encode = num => {
   let res = '';
   const legend = 'zabcdefghijklmnopqrstuvwxy';
   while(num){
      const rem = num % (legend.length);
      res += legend[rem];
      num = (Math.floor(num / legend.length));
   };
   return res;
};
const decode = str => {
   let num = 0;
   const legend = 'zabcdefghijklmnopqrstuvwxy';
   for(let i = 0; i < str.length; i++){
      const ind = legend.indexOf(str[i]);
      num += (ind * Math.pow(legend.length, i));
   };
   return num;
}
console.log(encode(num));
console.log(decode('ea'));

输出结果

控制台中的输出将是-

ea
31