Javascript 字符串编码器到固定大小输出

Javascript 字符串编码器到固定大小输出,javascript,node.js,encode,Javascript,Node.js,Encode,我有一个任务,我需要编写一个符合以下要求的编码器: 输入:一个从1到8位的整数(即12345678235276543) 输出:一个固定大小的6位代码,可以包含任何字母数字和符号(a-z、a-z、0-9、!@#$%*()|-|=+^/?) 该操作必须是可逆的,因此给定一个代码,它应该解码回原始整数 输出代码不需要加密安全 我没有加密算法或编码算法的经验,所以我不知道如何完成这项工作。我在网上找到的libs不允许设置输出大小,因为它基于输入大小 非常感谢您的帮助,我在这里迷路了这里有一个简单的方

我有一个任务,我需要编写一个符合以下要求的编码器:

  • 输入:一个从1到8位的整数(即12345678235276543)
  • 输出:一个固定大小的6位代码,可以包含任何字母数字和符号(a-z、a-z、0-9、!@#$%*()|-|=+^/?)
  • 该操作必须是可逆的,因此给定一个代码,它应该解码回原始整数
  • 输出代码不需要加密安全
我没有加密算法或编码算法的经验,所以我不知道如何完成这项工作。我在网上找到的libs不允许设置输出大小,因为它基于输入大小


非常感谢您的帮助,我在这里迷路了

这里有一个简单的方法:

  • 将输入转换为字符串,并根据需要在左侧添加零以扩展到9位
  • 使用base32编码对每组3位数字进行编码,每组最多两个字母/数字。您可以在测试时使用
    .toString(32)
    ,但我猜面试官希望您创建自己的函数
  • 将每组填充到长度2并连接
例如:

 1234567 -> 001234567 -> 001 234 567 -> 1 7a hn -> 017ahn

祝你好运

当我看到这一点时,我很兴奋,所以我做了一个至少符合问题要求的答案:D

编码通过基本转换逻辑和将这些数字转换为文本来工作。我使用了一个长度为6的数组来存储编码时的数据,以确保它始终是6个字符(而不是更少)

解码的工作原理是,只需根据功率将其相加,这样它就可以完全相加

我希望这是你想要的答案,因为我喜欢这个问题:D

//自制答案:D
//我第一次看到这样的问题,我希望我能在大学ngl里学到这样的东西
函数编码(num){
让字母表=[]
对于(设i=48;i0){
让减法=(num%Math.pow(长度,pow1))
num-=减法
arr[pow]=减法/数学功率(长度,功率)
pow++;pow1++
}
返回arr.reverse()
.map(a=>String.fromCharCode(a+48))//nice字符的偏移量为48
.join(“”)//基本上类似于基转换
}
函数解码(字符串){
设num=0;设length=127-48//length实际上是基数(本例中为79)
string=string.split(“”).reverse().join(“”)

对于(让i=0;i您的规范基本上描述了,例如:自己动手?@LawrenceCherone非常感谢!我偶然发现了Hashids,但太笨了,无法进入文档的这一部分。我很高兴您喜欢我的问题。您的热情令人振奋。感谢您的帮助