Tôi đã tạo điều này để tạo các khóa tương tự trên YouTube. Nó sử dụng regex để nắm bắt số và sau đó chu kỳ trên một danh sách phù hợp để lắp ráp chuỗi.
Thứ tự của mảng ký tự là tùy ý, bạn có thể thực hiện bất kỳ thứ gì bạn thích, nhưng khi bạn đã đặt nó vào vị trí, không thay đổi sau, nếu không bạn có thể chạy vào các khóa trùng lặp và đảm bảo bạn không không có bất kỳ bản sao nào.
Ở đây, num, là biến chứa khóa nhập. Nó rất dài trong mẫu này, nhưng nó có thể dài bất kỳ.
var chars = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
num = "000102030405060708091011121314151617181920212223242526272829303132333435373839404142434445464748495051525354555657585960616263646566";
getnums = num.match(/(0|6[0-1]|[0-5]?[0-9])/g);
to62 = "";
for (var i=0;i<getnums.length;i++) {
to62 = to62 + chars[parseInt(getnums[i])];
// console.log(getnums[i] + ": " + chars[parseInt(getnums[i])])
}
console.log(to62);
Và đây là triển khai trong Cold Fusion sử dụng mảng dựa trên 1 chứ không phải mảng 0 dựa trên javascript, trong trường hợp nó giúp mọi người.
<cfscript>
chars = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
num = "0001020304050607080910111213141516171819202122232425262728293031323334353738394041424344454614748495051525354555657585960616263646566";
getnums = ReMatch("(0|6[0-1]|[0-5]?[0-9])",num);
to62 = "";
for (i=1; i<=arraylen(getnums); i=i+1) {
to62 = to62 & chars[getnums[i]+1];
}
writeoutput(to62);
</cfscript>
Bạn nói "danh sách chữ số" thay vì "số". Điều này có nghĩa là bạn muốn "000006" được xử lý khác với "6"? – AakashM
Một câu hỏi hay. Không, tôi không. Tôi sẽ sửa nó để làm cho nó rõ ràng hơn. – alumb