|
发表于 2024-9-4 21:42:54
|
显示全部楼层
河南省洛阳市
const table = "fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF";
const s = [11, 10, 3, 8, 4, 6, 2, 9, 5, 7];
const xor = 177451812;
const add_105 = 8728348608;
const add_all = 8728348608 - Math.pow(2, 31);
const tr = new Array(128).fill(-1);
for (let i = 0; i < table.length; i++) {
tr[table.charCodeAt(i)] = i;
}
function bv2av(bv) {
let r = 0;
for (let i = 0; i < 6; i++) {
r += tr[bv.charCodeAt(i)] * Math.pow(58, 5 - i);
}
let add = add_105;
if (r < add) {
add = add_all;
}
let av = ((r - add) ^ xor);
return av;
}
function av2bv(av) {
let add = add_105;
if (av > 1060000000) {
add = add_all;
}
av = (av ^ xor) + add;
let r = ['B', 'V', '1', ' ', ' ', '4', ' ', '1', ' ', '7', ' ', ' '];
for (let i = 0; i < 6; i++) {
let index = Math.floor((av / Math.pow(58, 5 - i)) % 58);
r[s[i]] = table[index];
}
return r.join('');
}
// Example usage:
console.log(av2bv(1301648659)); // Output BV number
console.log(bv2av("BV1uu4m1g7Ej")); // Output AV number |
|