请教一个字符串合并压缩的算法。

发布于 2022-09-04 10:45:55 字数 209 浏览 5 评论 0

需求是这样的,一个6位长度的时间字符串(193025,即晚上7点30分25秒),然后和一个4位长度的字符串(“ABCD”),把这两个字符串“相加”生成一个新的、可逆向分解开的6位(最长6位,可以更短)字符串。

这两个字符串都是变化、不同的。

因为目前老接口只支持6位的字符串做参数,我想一次传递多个参数过去,所以要这样处理一下。

求思路,实现语言不限。谢谢~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

泅渡 2022-09-11 10:45:55

193025ABDE每两位做一个映射,比如说前6位每两位转换为一个60进制的符号,然后后2位每两位转换成一个676进制的符号,然后服务器端解码。

比较无聊,写了个简单的,每两位转换为一个字符

var origin = "193025ABDE";
var encode = m=>String.fromCharCode(parseInt(m, 36));//转换为36进制后使用unicode编码
var decode = m=>m.charCodeAt(0).toString(36);//取unicode代码后转换为36进制字符串
var encoded = origin.replace(/.{2}/g, encode);//每两位一处理
var decoded = encoded.replace(/./g, decode);
妖妓 2022-09-11 10:45:55

可以把时间字符串换算成秒数,最大86400位,平方根是294,因为是字符串所以可以取294个任意字符作为前两位,计算的时候294*a+b就可以了,不过需要把那个字符代表几记录一下,干脆用unicode从0开始好了。
大概是这么个思路,主要的出发点是字符串每位可以表达的信息量是很大的。

零崎曲识 2022-09-11 10:45:55

分2次传过去

山田美奈子 2022-09-11 10:45:55

。。 我都说了要一次传多个参数。分两次就不折腾了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文