kayseen
V2EX  ›  问与答

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

  •  
  •   kayseen · Dec 30, 2019 · 1864 views
    This topic created in 2502 days ago, the information mentioned may be changed or developed.
    比如我现在的产品类型有汽车、飞机、火车,
    
    每个类型就是一个 mysql 的表,每个类型下面有无数个产品, 每个产品有一个唯一的 32 位字符串编码,
    
    
    问题来了,请问如何根据某个 32 位的字符串分辨它对应的是什么分类呢?
    
    或者在生成 32 位编码的过程中可以用什么方法加以区分或者控制吗?
    
    10 replies  •  2019-12-30 11:22:06 +08:00
    b821025551b
    b821025551b
    Dec 30, 2019
    1
    生成的时候用部分位代表产品,比如
    汽车:v+31
    火车:t+31
    飞机:a+31
    Hyseen
    Hyseen
    Dec 30, 2019
    2
    前面几位用来标记类别
    nutting
    nutting
    Dec 30, 2019
    3
    二进制的位生成数字,或者既然是字符串,那任何一位也能区别啊,大不了 1 开头,2 开头,3 开头这种
    kayseen
    kayseen
    OP
    Dec 30, 2019
    4
    @b821025551b
    @Hyseen
    @nutting
    这个方法我知道,有没有一种方法类似于将一个 32 位的编码经过某国字段的处理,

    例如:
    旧的 32 位编码+9=新的 32 位编码,
    从而通过新的 32 位编码退出旧的 32 位编码和 9
    b821025551b
    b821025551b
    Dec 30, 2019
    5
    @kayseen #4 需要看你原 32 位字符串的字典表,如果只用到了数字或者只用到了小写,可以实现,相当于二进制->10 进制;但是如果你用了大小写+数字,除非往里面添加字符,否则不可能实现。
    kayseen
    kayseen
    OP
    Dec 30, 2019
    6
    @b821025551b
    我现在是只用到了数字和小写字母, 请问下这个有具体的实现案例或者资料链接吗?
    我用的 python, 貌似找不到这种进制转换编码的实现...
    b821025551b
    b821025551b
    Dec 30, 2019
    7
    @kayseen #6
    那是可以搞的,其实就是 36 进制->62 进制(或者在你这个应用中,37-62 都可以满足)。
    实现思想就是 2\8\10\16 进制互转的拓展,方法在大学第一本编程书上就有。
    kop1989
    kop1989
    Dec 30, 2019
    8
    ls 的意思就是用大写+小写+数字来压缩你原本的小写+数字 32 位编码,然后在后面就可以添加校验位、计算位甚至是特征位
    b821025551b
    b821025551b
    Dec 30, 2019
    9
    @kop1989 #8 这些是可以实现,但是初衷还是要实现 4L 说的,新码和老码可以互相转换,因为 LZ 可能要去兼容已经生成的 id。
    kayseen
    kayseen
    OP
    Dec 30, 2019
    10
    @b821025551b
    是的,场景确实就是这样的,十分感谢提示啊,具体实现我再搞搞...
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1844 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 16:57 · PVG 00:57 · LAX 08:57 · JFK 11:57
    ♥ Do have faith in what you're doing.