问题描述
值的编码
通过在代码的后3位屏蔽掩码来将值编码 “起始代码”中的值。这是通过将值添加到 如果结果值超过“起始代码”的后三位 999,然后从该值中减去1000。例如,如果代码 是“ 123456 789”,并且要编码的值是50,结果代码 其值编码为“ 123456 839”。解码通过 将“起始码”基数(最后3位)减去基数 (最后3位数字)的接收到的代码。例如,如果收到 代码是123456829,基数是829。从829减去789可得出 40是值。如果获得的值为负,则为1000 需要添加。
在设备上解码代码
- 从输入代码中解码值。
- 通过按照“值的编码”中的步骤将值编码到起始代码中来生成“基本代码” 部分
- 通过“代码生成函数”将“基本代码”传递X次,X是最后一次计数+ 30,每次迭代: 3.1。将结果代码中的“代码库”替换为“编码的代码库”。例如,如果从步骤3得到的代码是“ 234567 890”,则最终代码将为“ 234567 839”(如果值为 编码为50,底数为789,如上例所示) 3.2。如果当前X严格高于上一个计数,则如果它们匹配,我们会将结果代码与输入代码进行比较。如果它 匹配,则代码有效,我们返回值。如果不是,我们 继续迭代
- 如果到达循环末尾且未找到匹配项,则该代码无效(已经使用或正确无效)。
到目前为止,我已经设法根据第一段创建了一段代码,但未能理解第二段。
let code = 123456;
let base = 789;
let units = 50;
let originalUnits=0;
//units = 1000;
let maxBase=1000;
console.log("Default: "+code.toString()+base);
let token = encodetoken(base,units,code);
//token = "123456383";
//token="123456967";
console.log("Token: "+token);
let decodedBase = decodetoken(token,base);
console.log("Decoded: "+decodedBase);
console.log(isValid(decodedBase));
function getUnit(userBase,sysBase) {
let resultUnit = userBase-sysBase;
if(resultUnit<=0) resultUnit = (resultUnit+maxBase);
return resultUnit;
}
function encodetoken(base,code) {
if(units != Math.floor(units)){
//originalUnits = units;
//units = Math.ceil(units);
}
let key = (base + units);
if(key>maxBase){
if(key>9999) return false;
key = (key-maxBase);
}
return code.toString()+key;
}
function decodetoken(token,base) {
if(token.toString().length!==9)return [0,0];
let key = token.toString().substring(6,9);
let resultUnit = getUnit(key,base);
return resultUnit;
}
我想将第二段解释为代码,我听不懂。
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)