扫描二维码(根据 32 位字符串)怎么区分某一类型的产品

2019-12-30 10:01:12 +08:00
 kayseen
比如我现在的产品类型有汽车、飞机、火车,

每个类型就是一个 mysql 的表,每个类型下面有无数个产品, 每个产品有一个唯一的 32 位字符串编码,


问题来了,请问如何根据某个 32 位的字符串分辨它对应的是什么分类呢?

或者在生成 32 位编码的过程中可以用什么方法加以区分或者控制吗?
1126 次点击
所在节点    问与答
10 条回复
b821025551b
2019-12-30 10:07:44 +08:00
生成的时候用部分位代表产品,比如
汽车:v+31
火车:t+31
飞机:a+31
Hyseen
2019-12-30 10:08:26 +08:00
前面几位用来标记类别
nutting
2019-12-30 10:15:39 +08:00
二进制的位生成数字,或者既然是字符串,那任何一位也能区别啊,大不了 1 开头,2 开头,3 开头这种
kayseen
2019-12-30 10:19:07 +08:00
@b821025551b
@Hyseen
@nutting
这个方法我知道,有没有一种方法类似于将一个 32 位的编码经过某国字段的处理,

例如:
旧的 32 位编码+9=新的 32 位编码,
从而通过新的 32 位编码退出旧的 32 位编码和 9
b821025551b
2019-12-30 10:26:29 +08:00
@kayseen #4 需要看你原 32 位字符串的字典表,如果只用到了数字或者只用到了小写,可以实现,相当于二进制->10 进制;但是如果你用了大小写+数字,除非往里面添加字符,否则不可能实现。
kayseen
2019-12-30 11:00:24 +08:00
@b821025551b
我现在是只用到了数字和小写字母, 请问下这个有具体的实现案例或者资料链接吗?
我用的 python, 貌似找不到这种进制转换编码的实现...
b821025551b
2019-12-30 11:07:46 +08:00
@kayseen #6
那是可以搞的,其实就是 36 进制->62 进制(或者在你这个应用中,37-62 都可以满足)。
实现思想就是 2\8\10\16 进制互转的拓展,方法在大学第一本编程书上就有。
kop1989
2019-12-30 11:11:23 +08:00
ls 的意思就是用大写+小写+数字来压缩你原本的小写+数字 32 位编码,然后在后面就可以添加校验位、计算位甚至是特征位
b821025551b
2019-12-30 11:16:24 +08:00
@kop1989 #8 这些是可以实现,但是初衷还是要实现 4L 说的,新码和老码可以互相转换,因为 LZ 可能要去兼容已经生成的 id。
kayseen
2019-12-30 11:22:06 +08:00
@b821025551b
是的,场景确实就是这样的,十分感谢提示啊,具体实现我再搞搞...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/633455

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX