AnA*_*ice 23 javascript jquery
我正在考虑在这里使用编码/解码技术(编码到基础36 /从基础36解码在Ruby中很简单)
想要跟踪用户推荐,邀请URL.我可以使用Rails进行解码,但有没有办法用Javascript或jQuery进行编码?
Ama*_*dan 47
该toString方法对Number具有基数的可选参数:
(128482).toString(36);
128482..toString(36);
128482 .toString(36);
var num = 128482; num.toString(36);
Run Code Online (Sandbox Code Playgroud)
请注意这不起作用,因为数字期望一段时间后的十进制数字,而不是字母:
128482.toString(36); // Syntax error
Run Code Online (Sandbox Code Playgroud)
此外,您还可以使用JS进行解码:
parseInt("2r4y", 36);
Run Code Online (Sandbox Code Playgroud)
对于任何想要如何编码base36中的字符串的人(因为这个问题,如何在javascript中将字符串转换为base36,重定向到此处) -
这就是我想出来的.
/* encode / decode strings to / from base36
based on: http://snipplr.com/view/12653/
*/
var base36 = {
encode: function (str) {
return Array.prototype.map.call(str, function (c) {
return c.charCodeAt(0).toString(36);
}).join("");
},
decode: function (str) {
//assumes one character base36 strings have been zero padded by encodeAscii
var chunked = [];
for (var i = 0; i < str.length; i = i + 2) {
chunked[i] = String.fromCharCode(parseInt(str[i] + str[i + 1], 36));
}
return chunked.join("");
},
encodeAscii: function (str) {
return Array.prototype.map.call(str, function (c) {
var b36 = base36.encode(c, "");
if (b36.length === 1) {
b36 = "0" + b36;
}
return b36;
}).join("")
},
decodeAscii: function (str) {
//ignores special characters/seperators if they're included
return str.replace(/[a-z0-9]{2}/gi, function (s) {
return base36.decode(s);
})
}
};
var foo = "a-Az-Z 0-9 !@#$%^&*()-_=+[{]};:',<.>/?`~";
var bar = base36.encodeAscii(foo);
console.log(foo);
console.log(base36.decode(bar));
console.log('');
var bar = "==/" + bar + "\\==";
console.log(bar)
console.log(base36.decodeAscii(bar));
//doesn't work
console.log('');
var myString = "some string";
var myNum = parseInt(myString, 36);
console.log(myNum.toString(36))
myString = "FooBarW000t";
myNum = parseInt(myString, 36);
console.log(myNum.toString(36))
myString = "aAzZ09!@#$%^&*()-_=+[{]};:',<.>/?`~";
myNum = parseInt(myString, 36);
console.log(myNum.toString(36))
/*
Outputs:
a-Az-Z 0-9 !@#$%^&*()-_=+[{]};:',<.>/?`~
a-Az-Z 0-9 !@#$%^&*()-_=+[{]};:',<.>/?`~
==/2p191t3e192i0w1c191l0w0x1s0z10112m12161415192n1p172j3f2l3h1n1m13181o1a1q1b1r2o3i\==
==/a-Az-Z 0-9 !@#$%^&*()-_=+[{]};:',<.>/?`~\==
some
foobarw000w
aazz09
*/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13408 次 |
| 最近记录: |