Javascript 将数字转换为字符?

Javascript 将数字转换为字符?,javascript,node.js,Javascript,Node.js,我有一个系统,用户必须在手机中写入userid:s。我想混淆id:s,这样很难猜出数字,然后我想使用以下字符将其转换为base-23数字: abcdefghjkmnpqrstuvwxyz 我是droppin I、L和O,因为这些角色严重吸吮身份证号码 因此,例如,如果输入是23,则输出将是aa,24将是ab等。(在通过此函数运行用户ID之前,我将对其进行置乱/解读) 我想知道如何把整数转换成字母。这是我能想到的最好的: var scrambled = 234, charmap = ['

我有一个系统,用户必须在手机中写入userid:s。我想混淆id:s,这样很难猜出数字,然后我想使用以下字符将其转换为base-23数字:

abcdefghjkmnpqrstuvwxyz
我是droppin I、L和O,因为这些角色严重吸吮身份证号码

因此,例如,如果输入是
23
,则输出将是
aa
24
将是
ab
等。(在通过此函数运行用户ID之前,我将对其进行置乱/解读)

我想知道如何把整数转换成字母。这是我能想到的最好的:

var scrambled = 234,
    charmap = ['a','b','c'...]

scrambled.toString(23)

在这里,我想对每个字符进行charmap[scrambled]并将其保存到字符串中,我可以将被置乱的字符转换为字符串并将其拆分,但我认为有一种更干净的方法可以做到这一点。现代网络技术还可以

试试这个方法,我在C#中使用了它,它做的事情与C#完全一样,并且确信您可以将它转换为Javascript:

private static string strBasechars = "BCDEFGHIJKLMNOPQRSTUVWXYZ";

  public static string ToBase(long input)
        {
            string r = string.Empty;
            int targetBase = strBasechars.Length;
            do
            {
                r = string.Format("{0}{1}",
                    strBasechars[(int)(input % targetBase)],
                    r);
                input /= targetBase;
            } while (input > 0);

            return r;
        }

尽管我强烈建议您删除所有元音,因为您可能会遇到一些不好的单词:)

因为您的字符映射并不简单,所以您可以编写自己的函数。 将charmap隐藏在闭包中

这是一个完整的小提琴,提供了双面转换对象:

var convert=(函数(){
var基数=23;
var charmap=“abcdefghjkmnpqrstuvwxyz”;
返回{
toString:函数(i){
var结果=”;
做{
结果=charmap.charAt(i%基)+结果;
i=(i-i%基数)/基数;
}而(i>0);
返回结果;
},
fromString:函数{
var结果=0;
对于(变量i=0;i控制台日志(“ok”)
您可以使用do while循环进行编码,并获取剩余的值和字符集的长度,用于编码和解码,使用哈希表并根据索引计算值

函数编码(值,字符映射){
变量编码=“”,
l=字符映射长度;
做{
编码=字符映射[值%l]+编码;
数值=数学楼层(数值/l);
}while(值)
返回编码;
}
函数解码(值、字符映射){
var hash=Object.create(null),
l=字符映射长度;
charmap.split(“”).forEach(函数(a,i){
hash[a]=i;
});
返回值.split(“”).reduce(函数(r,a){
返回r*l+hash[a];
}, 0);
}
var charmap='abcdefghjkmnpqrstuvwxyz',
编码值=23,
encodedValue=encode(encodeValue,charmap),
解码值=解码(编码值,字符映射);
console.log(encodedValue);

console.log(解码值)
你能分享一些输入和输出示例吗?没错,因为我们无法通过两个示例了解你的目标更新,如果仍然不清楚,请告诉我!旁注,你打算宣布charmap吗?在有分号的地方,多个变量应该用逗号分隔。你可能无意中污染了全局名称空间。@Himmator支持你,伙计。很酷,我不写C,代码中的一两条注释会让我更容易阅读:)@Himmator。。。查看Regis Portalez发布的第二个答案。。。这正是你需要的。23是我样本中的targetBase。。。其他一切都一样这很聪明,你也很聪明!但是,我也需要做相反的操作,即将字符串转换为整数,假设我也可以将其转换为整数,这也会导致无限循环,因为我的结果是0。
convert.toString(23)
返回
“ab”
。。。请提供您自己的答案,而不是所有这些评论,而不是
“aa”
。我会更感激你的