V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kayseen
V2EX  ›  问与答

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

  •  
  •   kayseen · 2019-12-30 10:01:12 +08:00 · 1127 次点击
    这是一个创建于 1827 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如我现在的产品类型有汽车、飞机、火车,
    
    每个类型就是一个 mysql 的表,每个类型下面有无数个产品, 每个产品有一个唯一的 32 位字符串编码,
    
    
    问题来了,请问如何根据某个 32 位的字符串分辨它对应的是什么分类呢?
    
    或者在生成 32 位编码的过程中可以用什么方法加以区分或者控制吗?
    
    10 条回复    2019-12-30 11:22:06 +08:00
    b821025551b
        1
    b821025551b  
       2019-12-30 10:07:44 +08:00
    生成的时候用部分位代表产品,比如
    汽车:v+31
    火车:t+31
    飞机:a+31
    Hyseen
        2
    Hyseen  
       2019-12-30 10:08:26 +08:00
    前面几位用来标记类别
    nutting
        3
    nutting  
       2019-12-30 10:15:39 +08:00
    二进制的位生成数字,或者既然是字符串,那任何一位也能区别啊,大不了 1 开头,2 开头,3 开头这种
    kayseen
        4
    kayseen  
    OP
       2019-12-30 10:19:07 +08:00
    @b821025551b
    @Hyseen
    @nutting
    这个方法我知道,有没有一种方法类似于将一个 32 位的编码经过某国字段的处理,

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