关于BV转换AV算法研究
2020-03-24 22:20 作者:Iammyself001 | 我要投稿
今天 Bilibili 把以前 av
+ 数字的稿件地址格式更换为 BV
+ 字母数字的格式 ,类似 Youtube 的稿件编码方式:【升级公告】AV号全面升级至BV号
但是比方说以前只需要记住简单的一些数字就很方便,现在需要记住必将长的数字与字母组合,这样就比较麻烦(其实可能是因为刚开始有些不习惯),所以希望依旧记住原来的AV号,这样可以方便一些,参考网上的讨论的算法(好像大家习惯用python讨论),也实现一个具体算法来实现BV到AV的转换。
思路:
根据各种消息,可以判断应该是Base58 编码,设 x 是一个指定的 av 号,查询 58k+x, 58^2k+x, 58^3k+x, 58^4k+x (k∈Z), 这些 av 号对应的 bv 号,发现 bv 号的第 12、11、4、9、5 位分别会变化。所以猜测这些是 58 进制下的相应位。但是不可能直接是 base58,应该是异或一个大数,base58 的字符表打乱之后得到的结果,所以“异或”就是产生二进制纹理的根本原因。
根据知乎的以为朋友的数据看出https://www.zhihu.com/question/381784377/answer/1099438784从这里能看出,那里不变的“1”、“411”、“7”并不是永久不变的,只不过它们对应的很高的数位,在目前B站av号存量来看,不足以让它们产生变化。其中“目前最高位”的第5位扎堆的那几个字符,在58进制转换表里大概也是扎堆的——大概在中后的位置。

仅文章作学习研究使用,欢迎一起讨论算法。
