比如我现在的产品类型有汽车、飞机、火车,
每个类型就是一个 mysql 的表,每个类型下面有无数个产品, 每个产品有一个唯一的 32 位字符串编码,
问题来了,请问如何根据某个 32 位的字符串分辨它对应的是什么分类呢?
或者在生成 32 位编码的过程中可以用什么方法加以区分或者控制吗?
1
b821025551b 2019-12-30 10:07:44 +08:00
生成的时候用部分位代表产品,比如
汽车:v+31 火车:t+31 飞机:a+31 |
2
Hyseen 2019-12-30 10:08:26 +08:00
前面几位用来标记类别
|
3
nutting 2019-12-30 10:15:39 +08:00
二进制的位生成数字,或者既然是字符串,那任何一位也能区别啊,大不了 1 开头,2 开头,3 开头这种
|
4
kayseen OP @b821025551b
@Hyseen @nutting 这个方法我知道,有没有一种方法类似于将一个 32 位的编码经过某国字段的处理, 例如: 旧的 32 位编码+9=新的 32 位编码, 从而通过新的 32 位编码退出旧的 32 位编码和 9 |
5
b821025551b 2019-12-30 10:26:29 +08:00
@kayseen #4 需要看你原 32 位字符串的字典表,如果只用到了数字或者只用到了小写,可以实现,相当于二进制->10 进制;但是如果你用了大小写+数字,除非往里面添加字符,否则不可能实现。
|
6
kayseen OP |
7
b821025551b 2019-12-30 11:07:46 +08:00
@kayseen #6
那是可以搞的,其实就是 36 进制->62 进制(或者在你这个应用中,37-62 都可以满足)。 实现思想就是 2\8\10\16 进制互转的拓展,方法在大学第一本编程书上就有。 |
8
kop1989 2019-12-30 11:11:23 +08:00
ls 的意思就是用大写+小写+数字来压缩你原本的小写+数字 32 位编码,然后在后面就可以添加校验位、计算位甚至是特征位
|
9
b821025551b 2019-12-30 11:16:24 +08:00
@kop1989 #8 这些是可以实现,但是初衷还是要实现 4L 说的,新码和老码可以互相转换,因为 LZ 可能要去兼容已经生成的 id。
|
10
kayseen OP @b821025551b
是的,场景确实就是这样的,十分感谢提示啊,具体实现我再搞搞... |