在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