606 lines
208 KiB
JavaScript
606 lines
208 KiB
JavaScript
import{_ as r,c as t,a as e,e as l,w as p,r as D,o as y,b as s,d as n}from"./app-Dgsdh8A6.js";const i={};function C(d,a){const o=D("CodeGroupItem"),c=D("CodeGroup");return y(),t("div",null,[a[2]||(a[2]=e('<h1 id="bvid霂湔�" tabindex="-1"><a class="header-anchor" href="#bvid霂湔�"><span>bvid霂湔�</span></a></h1><p>2020-03-23 B蝡蹱綫�箔��冽鰵��阮隞嗉�憸魀d<code>bvid</code>�交𦻖�蹂��滨�<code>avid</code>嚗���譍�銝𦒘��詨�</p><p>霂西�嚗�</p><ol><li><a href="https://www.bilibili.com/read/cv5167957" target="_blank" rel="noopener noreferrer">�𣂼�蝥批��𨳍�飊V�瑕��W�蝥扯秐BV�瘀�銝𤘪�嚗�</a></li><li><a href="https://www.bilibili.com/blackboard/activity-BV-PC.html" target="_blank" rel="noopener noreferrer">�𣂼�蝥批��𨳍�飊V�瑕��W�蝥扯秐BV��</a></li></ol><h2 id="璁�膩" tabindex="-1"><a class="header-anchor" href="#璁�膩"><span>璁�膩</span></a></h2><h3 id="�澆�" tabindex="-1"><a class="header-anchor" href="#�澆�"><span>�澆�</span></a></h3><p>�營vid�脲�銝粹鵭摨虫蛹 12 ���蝚虫葡嚗�� 3 銝芸𤐄摰帋蛹�輶V1�嘅��� 9 銝芯蛹 base58 霈∠�蝏𤘪�嚗����鉄�啣� <code>0</code> ��之�坔�瘥� <code>I</code>�� <code>O</code> 隞亙�撠誩�摮埈� <code>l</code>嚗�</p><h3 id="摰噼捶" tabindex="-1"><a class="header-anchor" href="#摰噼捶"><span>摰噼捶</span></a></h3><p>�營vid"銝算�𦡞vid�萘�base58蝻𣇉�嚗�虾�朞�蝞埈�餈𥡝��訾�頧砍�</p><h3 id="avid�穃噡�孵������" tabindex="-1"><a class="header-anchor" href="#avid�穃噡�孵������"><span>avid�穃噡�孵������</span></a></h3><p>隞� 2009-09-09 09:09:09 <a href="https://www.bilibili.com/video/av2" target="_blank" rel="noopener noreferrer">av2</a> ���撣�� 2020-03-28 19:45:02 <a href="https://www.bilibili.com/video/av99999999" target="_blank" rel="noopener noreferrer">av99999999</a> ���撣�蝡嗵��煺�隞交�蝔踵𧒄�港蛹憿箏���vid�烐𦆮嚗峕㺿銝粹��箏��靠vid</p><p><s>�㛖內B蝡嗘��寡�摰䕘�瘜芰𤌍</s></p><h2 id="蝞埈�璁�膩" tabindex="-1"><a class="header-anchor" href="#蝞埈�璁�膩"><span>蝞埈�璁�膩</span></a></h2><p><s>蝞埈�隞亙�蝔见�銝餉�����<a href="https://www.zhihu.com/question/381784377/answer/1099438784" target="_blank" rel="noopener noreferrer">�乩�@mcfx���蝑�</a></s><s>摰鮋�銝𡃏砲蝞埈�撟嗡�摰峕㟲,�啁�蝞埈�����䌊<a href="https://www.bilibili.com/video/BV1N741127Tj" target="_blank" rel="noopener noreferrer">�鞉号蝘塩�鬭v�瑁蓮bv�瑞�餈��</a></s> 摰鮋�銝𠹺��Y�蝞埈�靘萘�銝滚��湛��啁�蝞埈�����䌊 <a href="https://github.com/SocialSisterYi/bilibili-API-collect/issues/740" target="_blank" rel="noopener noreferrer">SocialSisterYi#740</a><s>�亥䌊 B 蝡蹱�銝� JS ��辣嚗�</s></p><h3 id="av-bv蝞埈�" tabindex="-1"><a class="header-anchor" href="#av-bv蝞埈�"><span>av->bv蝞埈�</span></a></h3><p><strong>霂湔�</strong></p><ol><li>�桀��� BV �澆�銝� BV1XXXXXXXXX嚗䔶誑 BV1 撘�憭湛��𡡞𢒰��鉄 9 雿齿���㺭�柴��</li><li>AV ��憭批�潔蛹 2�肅嫘��</li></ol><p><strong>蝞埈�</strong></p><ul><li>摰帋�銝�銝芸��怠�憪见�潔蛹 <code>['B', 'V', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0']</code> ��鵭摨虫蛹 12 ��㺭蝏�<code>bytes</code>嚗𣬚鍂鈭𤾸��刻蓮�W����蝚艾�� <ul><li>摰帋��㗛� <code>bv_idx</code> 撟嗅�憪见�銝箸㺭蝏� <code>bytes</code> ����𦒘�銝芰揣撘𨰻��</li><li>撠���亦� <code>aid</code> 銝� avid ��憭批�潘�2�肅對�餈𥡝��劐��𤥁�蝞梹��嗥��靝�撣賊� <code>XOR_CODE</code>嚗�23442827791579嚗㕑�銵���𤥁�蝞梹�敺堒��㗛� <code>tmp</code>��</li><li>敶� <code>tmp</code> 憭找�0�塚�敺芰㴓�扯�隞乩��滢��游�撠譍�0嚗� <ul><li>撠� <code>tmp</code> �支誑 58嚗��銵函��踹漲嚗� ����唬�銝箇揣撘𤏪�隞� <code>FcwAPNKTMug3GV5Lj7EJnHpWsx4tb8haYeviqBz6rkCy12mUSDQX9RdoZf</code> ��”銝剖��箏笆摨𠉛�摮㛖泵嚗�僎撠��韏见�潛� <code>bytes[bv_idx]</code>��</li><li>撠� <code>tmp</code> 銝� 58 瘙�芋韏见�潛� <code>tmp</code>��</li><li>撠� <code>bv_idx</code> ��1��</li></ul></li><li>撠� <code>bytes</code> �啁�銝剔�
|
||||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," MASK_CODE"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#B5CEA8"}},"2251799813685247"),s("span",{style:{color:"#569CD6"}},"n"),s("span",{style:{color:"#D4D4D4"}},";")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," MAX_AID"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#B5CEA8"}},"1"),s("span",{style:{color:"#569CD6"}},"n"),s("span",{style:{color:"#D4D4D4"}}," << "),s("span",{style:{color:"#B5CEA8"}},"51"),s("span",{style:{color:"#569CD6"}},"n"),s("span",{style:{color:"#D4D4D4"}},";")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," BASE"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#B5CEA8"}},"58"),s("span",{style:{color:"#569CD6"}},"n"),s("span",{style:{color:"#D4D4D4"}},";")]),n(`
|
|||
|
|
`),s("span",{class:"line"}),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," data"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#CE9178"}},"'FcwAPNKTMug3GV5Lj7EJnHpWsx4tb8haYeviqBz6rkCy12mUSDQX9RdoZf'"),s("span",{style:{color:"#D4D4D4"}},";")]),n(`
|
|||
|
|
`),s("span",{class:"line"}),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"function"),s("span",{style:{color:"#DCDCAA"}}," av2bv"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#9CDCFE"}},"aid"),s("span",{style:{color:"#D4D4D4"}},") {")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}}," const"),s("span",{style:{color:"#4FC1FF"}}," bytes"),s("span",{style:{color:"#D4D4D4"}}," = ["),s("span",{style:{color:"#CE9178"}},"'B'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'V'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'1'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'0'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'0'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'0'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'0'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'0'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'0'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'0'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'0'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'0'"),s("span",{style:{color:"#D4D4D4"}},"];")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}}," let"),s("span",{style:{color:"#9CDCFE"}}," bvIndex"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#9CDCFE"}},"bytes"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"length"),s("span",{style:{color:"#D4D4D4"}}," - "),s("span",{style:{color:"#B5CEA8"}},"1"),s("span",{style:{color:"#D4D4D4"}},";")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}}," let"),s("span",{style:{color:"#9CDCFE"}}," tmp"),s("span",{style:{color:"#D4D4D4"}}," = ("),s("span",{style:{color:"#4FC1FF"}},"MAX_AID"),s("span",{style:{color:"#D4D4D4"}}," | "),s("span",{style:{color:"#DCDCAA"}},"BigInt"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#9CDCFE"}},"aid"),s("span",{style:{color:"#D4D4D4"}},")) ^ "),s("span",{style:{color:"#4FC1FF"}},"XOR_CODE"),s("span",{style:{color:"#D4D4D4"}},";")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}}," while"),s("span",{style:{color:"#D4D4D4"}}," ("),s("span",{style:{color:"#9CDCFE"}},"tmp"),s("span",{style:{color:"#D4D4D4"}}," > "),s("span",{style:{color:"#B5CEA8"}},"0"),s("span",{style:{color:"#D4D4D4"}},") {")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}}," bytes"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#9CDCFE"}},"bvIndex"),s("span",{style:{color:"#D4D4D4"}},"] = "),s("span",{style:{color:"#9CDCFE"}},"data"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#DCDCAA"}},"Number"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#9CDCFE"}},"tmp"),s("span",{style:{color:"#D4D4D4"}}," % "),s("span",{style:{color:"#DCDCAA"}},"BigInt"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#4FC1FF"}},"BASE"),s("span",{style:{color:"#D4D4D4"}},"))];")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}}," tmp"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#9CDCFE"}},"tmp"),s("span",{style:{color:"#D4D4D4"}}," / "),s("span",{style:{color:"#4FC1FF"}},"BASE"),s("span",{style:{color:"#D4D4D4"}},";")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}}," bvIndex"),s("span",{style:{color:"#D4D4D4"}}," -= "),s("span",{style:{color:"#B5CEA8"}},"1"),s("span",{style:{color:"#D4D4D4"}},";")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#D4D4D4"}}," }")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#D4D4D4"}}," ["),s("span",{style:{color:"#9CDCFE"}},"bytes"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"3"),s("span",{style:{color:"#D4D4D4"}},"], "),s("span",{style:{color:"#9CDCFE"}},"bytes"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"9"),s("span",{style:{color:"#D4D4D4"}},"]] = ["),s("span",{style:{color:"#9CDCFE"}},"bytes"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"9"),s("span",{style:{color:"#D4D4D4"}},"], "),s("span",{style:{color:"#9CDCFE"}},"bytes"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"3"),s("span",{style:{color:"#D4D4D4"}},"]];")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#D4D4D4"}}," ["),s("span",{style:{color:"#9CDCFE"}},"bytes"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"4"),s("span",{style:{color:"#D4D4D4"}},"], "),s("span",{style:{color:"#9CDCFE"}},"bytes"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"7"),s("span",{style:{color:"#D4D4D4"}},"]] = ["),s("span",{style:{color:"#9CDCFE"}},"bytes"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"7"),s("span",{style:{color:"#D4D4D4"}},"], "),s("span",{style:{color:"#9CDCFE"}},"bytes"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"4"),s("span",{style:{color:"#D4D4D4"}},"]];")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}}," return"),s("span",{style:{color:"#9CDCFE"}}," bytes"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"join"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#CE9178"}},"''"),s("span",{style:{color:"#D4D4D4"}},");")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#D4D4D4"}},"}")]),n(`
|
|||
|
|
`),s("span",{class:"line"}),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"function"),s("span",{style:{color:"#DCDCAA"}}," bv2av"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#9CDCFE"}},"bvid"),s("span",{style:{color:"#D4D4D4"}},") {")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}}," const"),s("span",{style:{color:"#4FC1FF"}}," bvidArr"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#9CDCFE"}},"Array"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"from"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#9CDCFE"}},"bvid"),s("span",{style:{color:"#D4D4D4"}},");")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#D4D4D4"}}," ["),s("span",{style:{color:"#9CDCFE"}},"bvidArr"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"3"),s("span",{style:{color:"#D4D4D4"}},"], "),s("span",{style:{color:"#9CDCFE"}},"bvidArr"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"9"),s("span",{style:{color:"#D4D4D4"}},"]] = ["),s("span",{style:{color:"#9CDCFE"}},"bvidArr"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"9"),s("span",{style:{color:"#D4D4D4"}},"], "),s("span",{style:{color:"#9CDCFE"}},"bvidArr"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"3"),s("span",{style:{color:"#D4D4D4"}},"]];")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#D4D4D4"}}," ["),s("span",{style:{color:"#9CDCFE"}},"bvidArr"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"4"),s("span",{style:{color:"#D4D4D4"}},"], "),s("span",{style:{color:"#9CDCFE"}},"bvidArr"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"7"),s("span",{style:{color:"#D4D4D4"}},"]] = ["),s("span",{style:{color:"#9CDCFE"}},"bvidArr"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"7"),s("span",{style:{color:"#D4D4D4"}},"], "),s("span",{style:{color:"#9CDCFE"}},"bvidArr"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"4"),s("span",{style:{color:"#D4D4D4"}},"]];")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}}," bvidArr"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"splice"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#B5CEA8"}},"0"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#B5CEA8"}},"3"),s("span",{style:{color:"#D4D4D4"}},");")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}}," const"),s("span",{style:{color:"#4FC1FF"}}," tmp"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#9CDCFE"}},"bvidArr"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"reduce"),s("span",{style:{color:"#D4D4D4"}},"(("),s("span",{style:{color:"#9CDCFE"}},"pre"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#9CDCFE"}},"bvidChar"),s("span",{style:{color:"#D4D4D4"}},") "),s("span",{style:{color:"#569CD6"}},"=>"),s("span",{style:{color:"#9CDCFE"}}," pre"),s("span",{style:{color:"#D4D4D4"}}," * "),s("span",{style:{color:"#4FC1FF"}},"BASE"),s("span",{style:{color:"#D4D4D4"}}," + "),s("span",{style:{color:"#DCDCAA"}},"BigInt"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#9CDCFE"}},"data"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"indexOf"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#9CDCFE"}},"bvidChar"),s("span",{style:{color:"#D4D4D4"}},")), "),s("span",{style:{color:"#B5CEA8"}},"0"),s("span",{style:{color:"#569CD6"}},"n"),s("span",{style:{color:"#D4D4D4"}},");")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}}," return"),s("span",{style:{color:"#DCDCAA"}}," Number"),s("span",{style:{color:"#D4D4D4"}},"(("),s("span",{style:{color:"#9CDCFE"}},"tmp"),s("span",{style:{color:"#D4D4D4"}}," & "),s("span",{style:{color:"#4FC1FF"}},"MASK_CODE"),s("span",{style:{color:"#D4D4D4"}},") ^ "),s("span",{style:{color:"#4FC1FF"}},"XOR_CODE"),s("span",{style:{color:"#D4D4D4"}},");")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#D4D4D4"}},"}")]),n(`
|
|||
|
|
`),s("span",{class:"line"}),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"console"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"log"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#DCDCAA"}},"av2bv"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#B5CEA8"}},"111298867365120"),s("span",{style:{color:"#D4D4D4"}},"));")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"console"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"log"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#DCDCAA"}},"bv2av"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#CE9178"}},"'BV1L9Uoa9EUx'"),s("span",{style:{color:"#D4D4D4"}},"));")])])]),s("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1)])),_:1,__:[0]}),l(o,{title:"TypeScript"},{default:p(()=>a[1]||(a[1]=[s("div",{class:"language-typescript line-numbers-mode","data-highlighter":"shiki","data-ext":"typescript",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[s("pre",{class:"shiki dark-plus vp-code"},[s("code",{class:"language-typescript"},[s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," XOR_CODE"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#B5CEA8"}},"23442827791579"),s("span",{style:{color:"#569CD6"}},"n"),s("span",{style:{color:"#D4D4D4"}},";")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," MASK_CODE"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#B5CEA8"}},"2251799813685247"),s("span",{style:{color:"#569CD6"}},"n"),s("span",{style:{color:"#D4D4D4"}},";")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," MAX_AID"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#B5CEA8"}},"1"),s("span",{style:{color:"#569CD6"}},"n"),s("span",{style:{color:"#D4D4D4"}}," << "),s("span",{style:{color:"#B5CEA8"}},"51"),s("span",{style:{color:"#569CD6"}},"n"),s("span",{style:{color:"#D4D4D4"}},";")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," BASE"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#B5CEA8"}},"58"),s("span",{style:{color:"#569CD6"}},"n"),s("span",{style:{color:"#D4D4D4"}},";")]),n(`
|
|||
|
|
`),s("span",{class:"line"}),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," data"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#CE9178"}},"'FcwAPNKTMug3GV5Lj7EJnHpWsx4tb8haYeviqBz6rkCy12mUSDQX9RdoZf'"),s("span",{style:{color:"#D4D4D4"}},";")]),n(`
|
|||
|
|
`),s("span",{class:"line"}),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"function"),s("span",{style:{color:"#DCDCAA"}}," av2bv"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#9CDCFE"}},"aid"),s("span",{style:{color:"#D4D4D4"}},": "),s("span",{style:{color:"#4EC9B0"}},"number"),s("span",{style:{color:"#D4D4D4"}},") {")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}}," const"),s("span",{style:{color:"#4FC1FF"}}," bytes"),s("span",{style:{color:"#D4D4D4"}}," = ["),s("span",{style:{color:"#CE9178"}},"'B'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'V'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'1'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'0'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'0'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'0'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'0'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'0'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'0'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'0'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'0'"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#CE9178"}},"'0'"),s("span",{style:{color:"#D4D4D4"}},"];")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}}," let"),s("span",{style:{color:"#9CDCFE"}}," bvIndex"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#9CDCFE"}},"bytes"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"length"),s("span",{style:{color:"#D4D4D4"}}," - "),s("span",{style:{color:"#B5CEA8"}},"1"),s("span",{style:{color:"#D4D4D4"}},";")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}}," let"),s("span",{style:{color:"#9CDCFE"}}," tmp"),s("span",{style:{color:"#D4D4D4"}}," = ("),s("span",{style:{color:"#4FC1FF"}},"MAX_AID"),s("span",{style:{color:"#D4D4D4"}}," | "),s("span",{style:{color:"#DCDCAA"}},"BigInt"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#9CDCFE"}},"aid"),s("span",{style:{color:"#D4D4D4"}},")) ^ "),s("span",{style:{color:"#4FC1FF"}},"XOR_CODE"),s("span",{style:{color:"#D4D4D4"}},";")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}}," while"),s("span",{style:{color:"#D4D4D4"}}," ("),s("span",{style:{color:"#9CDCFE"}},"tmp"),s("span",{style:{color:"#D4D4D4"}}," > "),s("span",{style:{color:"#B5CEA8"}},"0"),s("span",{style:{color:"#D4D4D4"}},") {")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}}," bytes"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#9CDCFE"}},"bvIndex"),s("span",{style:{color:"#D4D4D4"}},"] = "),s("span",{style:{color:"#9CDCFE"}},"data"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#DCDCAA"}},"Number"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#9CDCFE"}},"tmp"),s("span",{style:{color:"#D4D4D4"}}," % "),s("span",{style:{color:"#DCDCAA"}},"BigInt"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#4FC1FF"}},"BASE"),s("span",{style:{color:"#D4D4D4"}},"))];")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}}," tmp"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#9CDCFE"}},"tmp"),s("span",{style:{color:"#D4D4D4"}}," / "),s("span",{style:{color:"#4FC1FF"}},"BASE"),s("span",{style:{color:"#D4D4D4"}},";")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}}," bvIndex"),s("span",{style:{color:"#D4D4D4"}}," -= "),s("span",{style:{color:"#B5CEA8"}},"1"),s("span",{style:{color:"#D4D4D4"}},";")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#D4D4D4"}}," }")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#D4D4D4"}}," ["),s("span",{style:{color:"#9CDCFE"}},"bytes"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"3"),s("span",{style:{color:"#D4D4D4"}},"], "),s("span",{style:{color:"#9CDCFE"}},"bytes"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"9"),s("span",{style:{color:"#D4D4D4"}},"]] = ["),s("span",{style:{color:"#9CDCFE"}},"bytes"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"9"),s("span",{style:{color:"#D4D4D4"}},"], "),s("span",{style:{color:"#9CDCFE"}},"bytes"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"3"),s("span",{style:{color:"#D4D4D4"}},"]];")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#D4D4D4"}}," ["),s("span",{style:{color:"#9CDCFE"}},"bytes"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"4"),s("span",{style:{color:"#D4D4D4"}},"], "),s("span",{style:{color:"#9CDCFE"}},"bytes"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"7"),s("span",{style:{color:"#D4D4D4"}},"]] = ["),s("span",{style:{color:"#9CDCFE"}},"bytes"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"7"),s("span",{style:{color:"#D4D4D4"}},"], "),s("span",{style:{color:"#9CDCFE"}},"bytes"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"4"),s("span",{style:{color:"#D4D4D4"}},"]];")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}}," return"),s("span",{style:{color:"#9CDCFE"}}," bytes"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"join"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#CE9178"}},"''"),s("span",{style:{color:"#D4D4D4"}},") "),s("span",{style:{color:"#C586C0"}},"as"),s("span",{style:{color:"#CE9178"}}," `BV1"),s("span",{style:{color:"#569CD6"}},"${"),s("span",{style:{color:"#4EC9B0"}},"string"),s("span",{style:{color:"#569CD6"}},"}"),s("span",{style:{color:"#CE9178"}},"`"),s("span",{style:{color:"#D4D4D4"}},";")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#D4D4D4"}},"}")]),n(`
|
|||
|
|
`),s("span",{class:"line"}),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"function"),s("span",{style:{color:"#DCDCAA"}}," bv2av"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#9CDCFE"}},"bvid"),s("span",{style:{color:"#D4D4D4"}},": "),s("span",{style:{color:"#CE9178"}},"`BV1"),s("span",{style:{color:"#569CD6"}},"${"),s("span",{style:{color:"#4EC9B0"}},"string"),s("span",{style:{color:"#569CD6"}},"}"),s("span",{style:{color:"#CE9178"}},"`"),s("span",{style:{color:"#D4D4D4"}},") {")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}}," const"),s("span",{style:{color:"#4FC1FF"}}," bvidArr"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#9CDCFE"}},"Array"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"from"),s("span",{style:{color:"#D4D4D4"}},"<"),s("span",{style:{color:"#4EC9B0"}},"string"),s("span",{style:{color:"#D4D4D4"}},">("),s("span",{style:{color:"#9CDCFE"}},"bvid"),s("span",{style:{color:"#D4D4D4"}},");")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#D4D4D4"}}," ["),s("span",{style:{color:"#9CDCFE"}},"bvidArr"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"3"),s("span",{style:{color:"#D4D4D4"}},"], "),s("span",{style:{color:"#9CDCFE"}},"bvidArr"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"9"),s("span",{style:{color:"#D4D4D4"}},"]] = ["),s("span",{style:{color:"#9CDCFE"}},"bvidArr"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"9"),s("span",{style:{color:"#D4D4D4"}},"], "),s("span",{style:{color:"#9CDCFE"}},"bvidArr"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"3"),s("span",{style:{color:"#D4D4D4"}},"]];")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#D4D4D4"}}," ["),s("span",{style:{color:"#9CDCFE"}},"bvidArr"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"4"),s("span",{style:{color:"#D4D4D4"}},"], "),s("span",{style:{color:"#9CDCFE"}},"bvidArr"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"7"),s("span",{style:{color:"#D4D4D4"}},"]] = ["),s("span",{style:{color:"#9CDCFE"}},"bvidArr"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"7"),s("span",{style:{color:"#D4D4D4"}},"], "),s("span",{style:{color:"#9CDCFE"}},"bvidArr"),s("span",{style:{color:"#D4D4D4"}},"["),s("span",{style:{color:"#B5CEA8"}},"4"),s("span",{style:{color:"#D4D4D4"}},"]];")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}}," bvidArr"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"splice"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#B5CEA8"}},"0"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#B5CEA8"}},"3"),s("span",{style:{color:"#D4D4D4"}},");")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}}," const"),s("span",{style:{color:"#4FC1FF"}}," tmp"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#9CDCFE"}},"bvidArr"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"reduce"),s("span",{style:{color:"#D4D4D4"}},"(("),s("span",{style:{color:"#9CDCFE"}},"pre"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#9CDCFE"}},"bvidChar"),s("span",{style:{color:"#D4D4D4"}},") "),s("span",{style:{color:"#569CD6"}},"=>"),s("span",{style:{color:"#9CDCFE"}}," pre"),s("span",{style:{color:"#D4D4D4"}}," * "),s("span",{style:{color:"#4FC1FF"}},"BASE"),s("span",{style:{color:"#D4D4D4"}}," + "),s("span",{style:{color:"#DCDCAA"}},"BigInt"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#9CDCFE"}},"data"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"indexOf"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#9CDCFE"}},"bvidChar"),s("span",{style:{color:"#D4D4D4"}},")), "),s("span",{style:{color:"#B5CEA8"}},"0"),s("span",{style:{color:"#569CD6"}},"n"),s("span",{style:{color:"#D4D4D4"}},");")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}}," return"),s("span",{style:{color:"#DCDCAA"}}," Number"),s("span",{style:{color:"#D4D4D4"}},"(("),s("span",{style:{color:"#9CDCFE"}},"tmp"),s("span",{style:{color:"#D4D4D4"}}," & "),s("span",{style:{color:"#4FC1FF"}},"MASK_CODE"),s("span",{style:{color:"#D4D4D4"}},") ^ "),s("span",{style:{color:"#4FC1FF"}},"XOR_CODE"),s("span",{style:{color:"#D4D4D4"}},");")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#D4D4D4"}},"}")]),n(`
|
|||
|
|
`),s("span",{class:"line"}),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"console"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"log"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#DCDCAA"}},"av2bv"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#B5CEA8"}},"111298867365120"),s("span",{style:{color:"#D4D4D4"}},"));")]),n(`
|
|||
|
|
`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"console"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"log"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#DCDCAA"}},"bv2av"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#CE9178"}},"'BV1L9Uoa9EUx'"),s("span",{style:{color:"#D4D4D4"}},"));")])])]),s("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1)])),_:1,__:[1]})]),_:1}),a[3]||(a[3]=e(`<h3 id="python" tabindex="-1"><a class="header-anchor" href="#python"><span>Python</span></a></h3><p>�亥䌊嚗�<a href="https://github.com/SocialSisterYi/bilibili-API-collect/issues/847#issuecomment-1807020675" target="_blank" rel="noopener noreferrer">#847</a></p><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-python"><span class="line"><span style="color:#D4D4D4;">XOR_CODE = </span><span style="color:#B5CEA8;">23442827791579</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">MASK_CODE = </span><span style="color:#B5CEA8;">2251799813685247</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">MAX_AID = </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;"> << </span><span style="color:#B5CEA8;">51</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">ALPHABET = </span><span style="color:#CE9178;">"FcwAPNKTMug3GV5Lj7EJnHpWsx4tb8haYeviqBz6rkCy12mUSDQX9RdoZf"</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">ENCODE_MAP = </span><span style="color:#B5CEA8;">8</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">7</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">5</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">6</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">DECODE_MAP = </span><span style="color:#4EC9B0;">tuple</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">reversed</span><span style="color:#D4D4D4;">(ENCODE_MAP))</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">BASE = </span><span style="color:#DCDCAA;">len</span><span style="color:#D4D4D4;">(ALPHABET)</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">PREFIX = </span><span style="color:#CE9178;">"BV1"</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">PREFIX_LEN = </span><span style="color:#DCDCAA;">len</span><span style="color:#D4D4D4;">(PREFIX)</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">CODE_LEN = </span><span style="color:#DCDCAA;">len</span><span style="color:#D4D4D4;">(ENCODE_MAP)</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">def</span><span style="color:#DCDCAA;"> av2bv</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">aid</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">int</span><span style="color:#D4D4D4;">) -> </span><span style="color:#4EC9B0;">str</span><span style="color:#D4D4D4;">:</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> bvid = [</span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">] * </span><span style="color:#B5CEA8;">9</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> tmp = (MAX_AID | aid) ^ XOR_CODE</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> i </span><span style="color:#C586C0;">in</span><span style="color:#DCDCAA;"> range</span><span style="color:#D4D4D4;">(CODE_LEN):</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> bvid[ENCODE_MAP[i]] = ALPHABET[tmp % BASE]</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> tmp //= BASE</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> PREFIX + </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">.join(bvid)</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">def</span><span style="color:#DCDCAA;"> bv2av</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">bvid</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">str</span><span style="color:#D4D4D4;">) -> </span><span style="color:#4EC9B0;">int</span><span style="color:#D4D4D4;">:</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> assert</span><span style="color:#D4D4D4;"> bvid[:</span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">] == PREFIX</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> bvid = bvid[</span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">:]</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> tmp = </span><span style="color:#B5CEA8;">0</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> i </span><span style="color:#C586C0;">in</span><span style="color:#DCDCAA;"> range</span><span style="color:#D4D4D4;">(CODE_LEN):</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> idx = ALPHABET.index(bvid[DECODE_MAP[i]])</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> tmp = tmp * BASE + idx</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> (tmp & MASK_CODE) ^ XOR_CODE</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;">assert</span><span style="color:#D4D4D4;"> av2bv(</span><span style="color:#B5CEA8;">111298867365120</span><span style="color:#D4D4D4;">) == </span><span style="color:#CE9178;">"BV1L9Uoa9EUx"</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;">assert</span><span style="color:#D4D4D4;"> bv2av(</span><span style="color:#CE9178;">"BV1L9Uoa9EUx"</span><span style="color:#D4D4D4;">) == </span><span style="color:#B5CEA8;">111298867365120</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="rust" tabindex="-1"><a class="header-anchor" href="#rust"><span>Rust</span></a></h3><p>���� <a href="https://github.com/Colerar/abv/blob/main/src/lib.rs" target="_blank" rel="noopener noreferrer">https://github.com/Colerar/abv/blob/main/src/lib.rs</a></p><h3 id="swift" tabindex="-1"><a class="header-anchor" href="#swift"><span>Swift</span></a></h3><div class="language-swift line-numbers-mode" data-highlighter="shiki" data-ext="swift" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-swift"><span class="line"><span style="color:#569CD6;">fileprivate</span><span style="color:#569CD6;"> let</span><span style="color:#D4D4D4;"> XOR_CODE: </span><span style="color:#4EC9B0;">UInt64</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">23442827791579</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">fileprivate</span><span style="color:#569CD6;"> let</span><span style="color:#D4D4D4;"> MASK_CODE: </span><span style="color:#4EC9B0;">UInt64</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">2251799813685247</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">fileprivate</span><span style="color:#569CD6;"> let</span><span style="color:#D4D4D4;"> MAX_AID: </span><span style="color:#4EC9B0;">UInt64</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;"> << </span><span style="color:#B5CEA8;">51</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">fileprivate</span><span style="color:#569CD6;"> let</span><span style="color:#D4D4D4;"> data: [</span><span style="color:#4EC9B0;">UInt8</span><span style="color:#D4D4D4;">] = [</span><span style="color:#B5CEA8;">70</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">99</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">119</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">65</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">80</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">78</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">75</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">84</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">77</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">117</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">103</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">51</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">71</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">86</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">53</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">76</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">106</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">55</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">69</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">74</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">110</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">72</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">112</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">87</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">115</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">120</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">52</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">116</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">98</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">56</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">104</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">97</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">89</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">101</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">118</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">105</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">113</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">66</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">122</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">54</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">114</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">107</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">67</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">121</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">49</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">50</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">109</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">85</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">83</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">68</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">81</span><span
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">fileprivate</span><span style="color:#569CD6;"> let</span><span style="color:#D4D4D4;"> BASE: </span><span style="color:#4EC9B0;">UInt64</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">58</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">fileprivate</span><span style="color:#569CD6;"> let</span><span style="color:#D4D4D4;"> BV_LEN: </span><span style="color:#4EC9B0;">Int</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">12</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">fileprivate</span><span style="color:#569CD6;"> let</span><span style="color:#D4D4D4;"> PREFIX: </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"BV1"</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">func</span><span style="color:#DCDCAA;"> av2bv</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">avid</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">UInt64</span><span style="color:#D4D4D4;">) -> </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#D4D4D4;"> bytes: [</span><span style="color:#4EC9B0;">UInt8</span><span style="color:#D4D4D4;">] = [</span><span style="color:#B5CEA8;">66</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">86</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">49</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">48</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">48</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">48</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">48</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">48</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">48</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">48</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">48</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">48</span><span style="color:#D4D4D4;">]</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#D4D4D4;"> bvIdx = BV_LEN - </span><span style="color:#B5CEA8;">1</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#D4D4D4;"> tmp = (MAX_AID | avid) ^ XOR_CODE</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> while</span><span style="color:#D4D4D4;"> tmp != </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> bytes[bvIdx] = data[</span><span style="color:#4EC9B0;">Int</span><span style="color:#D4D4D4;">(tmp % BASE)]</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> tmp /= BASE</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> bvIdx -= </span><span style="color:#B5CEA8;">1</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> bytes.</span><span style="color:#DCDCAA;">swapAt</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">9</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> bytes.</span><span style="color:#DCDCAA;">swapAt</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">7</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#4EC9B0;"> String</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">decoding</span><span style="color:#D4D4D4;">: bytes, </span><span style="color:#DCDCAA;">as</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">UTF8</span><span style="color:#D4D4D4;">.</span><span style="color:#569CD6;">self</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">func</span><span style="color:#DCDCAA;"> bv2av</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">bvid</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">) -> </span><span style="color:#4EC9B0;">UInt64</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> let</span><span style="color:#D4D4D4;"> fixedBvid: </span><span style="color:#4EC9B0;">String</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> bvid.</span><span style="color:#DCDCAA;">hasPrefix</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"BV"</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> fixedBvid = bvid</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">else</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> fixedBvid = </span><span style="color:#CE9178;">"BV"</span><span style="color:#D4D4D4;"> + bvid</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#D4D4D4;"> bvidArray = </span><span style="color:#4EC9B0;">Array</span><span style="color:#D4D4D4;">(fixedBvid.</span><span style="color:#9CDCFE;">utf8</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> bvidArray.</span><span style="color:#DCDCAA;">swapAt</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">9</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> bvidArray.</span><span style="color:#DCDCAA;">swapAt</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">7</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> let</span><span style="color:#D4D4D4;"> trimmedBvid = </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">decoding</span><span style="color:#D4D4D4;">: bvidArray[</span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">...], </span><span style="color:#DCDCAA;">as</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">UTF8</span><span style="color:#D4D4D4;">.</span><span style="color:#569CD6;">self</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#D4D4D4;"> tmp: </span><span style="color:#4EC9B0;">UInt64</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">0</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> char </span><span style="color:#C586C0;">in</span><span style="color:#D4D4D4;"> trimmedBvid {</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#569CD6;"> let</span><span style="color:#D4D4D4;"> idx = data.</span><span style="color:#DCDCAA;">firstIndex</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">of</span><span style="color:#D4D4D4;">: char.</span><span style="color:#9CDCFE;">utf8</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">first</span><span style="color:#D4D4D4;">!) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> tmp = tmp * BASE + </span><span style="color:#4EC9B0;">UInt64</span><span style="color:#D4D4D4;">(idx)</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> (tmp & MASK_CODE) ^ XOR_CODE</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;">print</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">av2bv</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">avid</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">111298867365120</span><span style="color:#D4D4D4;">))</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;">print</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">bv2av</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">bvid</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"BV1L9Uoa9EUx"</span><span style="color:#D4D4D4;">))</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="java" tabindex="-1"><a class="header-anchor" href="#java"><span>Java</span></a></h3><div class="language-java line-numbers-mode" data-highlighter="shiki" data-ext="java" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-java"><span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.math.BigInteger;</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;">/**</span></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@author</span><span style="color:#6A9955;"> cctyl</span></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> */</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> AVBVConverter</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#569CD6;"> final</span><span style="color:#4EC9B0;"> BigInteger</span><span style="color:#9CDCFE;"> XOR_CODE</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">BigInteger</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">valueOf</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">23442827791579L</span><span style="color:#D4D4D4;">);</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#569CD6;"> final</span><span style="color:#4EC9B0;"> BigInteger</span><span style="color:#9CDCFE;"> MASK_CODE</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">BigInteger</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">valueOf</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">2251799813685247L</span><span style="color:#D4D4D4;">);</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#569CD6;"> final</span><span style="color:#4EC9B0;"> BigInteger</span><span style="color:#9CDCFE;"> MAX_AID</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">BigInteger</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ONE</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">shiftLeft</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">51</span><span style="color:#D4D4D4;">);</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#569CD6;"> final</span><span style="color:#4EC9B0;"> int</span><span style="color:#9CDCFE;"> BASE</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#569CD6;"> final</span><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> DATA</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"FcwAPNKTMug3GV5Lj7EJnHpWsx4tb8haYeviqBz6rkCy12mUSDQX9RdoZf"</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> String</span><span style="color:#DCDCAA;"> av2bv</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">long</span><span style="color:#9CDCFE;"> aidParam</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> BigInteger</span><span style="color:#9CDCFE;"> aid</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">BigInteger</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">valueOf</span><span style="color:#D4D4D4;">(aidParam);</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> char</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">bytes</span><span style="color:#D4D4D4;"> = {</span><span style="color:#CE9178;">'B'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'V'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'1'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'0'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'0'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'0'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'0'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'0'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'0'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'0'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'0'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'0'</span><span style="color:#D4D4D4;">};</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> int</span><span style="color:#9CDCFE;"> bvIndex</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">bytes</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">length</span><span style="color:#D4D4D4;"> - </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> BigInteger</span><span style="color:#9CDCFE;"> tmp</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">MAX_AID</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">or</span><span style="color:#D4D4D4;">(aid).</span><span style="color:#DCDCAA;">xor</span><span style="color:#D4D4D4;">(XOR_CODE);</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> while</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">tmp</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">compareTo</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">BigInteger</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ZERO</span><span style="color:#D4D4D4;">) > </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> bytes[bvIndex] = </span><span style="color:#9CDCFE;">DATA</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">charAt</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">tmp</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">mod</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">BigInteger</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">valueOf</span><span style="color:#D4D4D4;">(BASE)).</span><span style="color:#DCDCAA;">intValue</span><span style="color:#D4D4D4;">());</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> tmp = </span><span style="color:#9CDCFE;">tmp</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">divide</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">BigInteger</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">valueOf</span><span style="color:#D4D4D4;">(BASE));</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> bvIndex--;</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> swap</span><span style="color:#D4D4D4;">(bytes, </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">9</span><span style="color:#D4D4D4;">);</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> swap</span><span style="color:#D4D4D4;">(bytes, </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">7</span><span style="color:#D4D4D4;">);</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#C586C0;"> new</span><span style="color:#DCDCAA;"> String</span><span style="color:#D4D4D4;">(bytes);</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> long</span><span style="color:#DCDCAA;"> bv2av</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">String</span><span style="color:#9CDCFE;"> bvid</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> char</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">bvidArr</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">bvid</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toCharArray</span><span style="color:#D4D4D4;">();</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> swap</span><span style="color:#D4D4D4;">(bvidArr, </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">9</span><span style="color:#D4D4D4;">);</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> swap</span><span style="color:#D4D4D4;">(bvidArr, </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">7</span><span style="color:#D4D4D4;">);</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> adjustedBvid</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> String</span><span style="color:#D4D4D4;">(bvidArr, </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">bvidArr</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">length</span><span style="color:#D4D4D4;"> - </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">);</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> BigInteger</span><span style="color:#9CDCFE;"> tmp</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">BigInteger</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ZERO</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (</span><span style="color:#4EC9B0;">char</span><span style="color:#9CDCFE;"> c</span><span style="color:#C586C0;"> :</span><span style="color:#9CDCFE;"> adjustedBvid</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toCharArray</span><span style="color:#D4D4D4;">()) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> tmp = </span><span style="color:#9CDCFE;">tmp</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">multiply</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">BigInteger</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">valueOf</span><span style="color:#D4D4D4;">(BASE)).</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">BigInteger</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">valueOf</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">DATA</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">indexOf</span><span style="color:#D4D4D4;">(c)));</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> BigInteger</span><span style="color:#9CDCFE;"> xor</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">tmp</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">and</span><span style="color:#D4D4D4;">(MASK_CODE).</span><span style="color:#DCDCAA;">xor</span><span style="color:#D4D4D4;">(XOR_CODE);</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> xor</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">longValue</span><span style="color:#D4D4D4;">();</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> void</span><span style="color:#DCDCAA;"> swap</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">char</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">array</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">int</span><span style="color:#9CDCFE;"> i</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">int</span><span style="color:#9CDCFE;"> j</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> char</span><span style="color:#9CDCFE;"> temp</span><span style="color:#D4D4D4;"> = array[i];</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> array[i] = array[j];</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> array[j] = temp;</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> void</span><span style="color:#DCDCAA;"> main</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">args</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> final</span><span style="color:#4EC9B0;"> int</span><span style="color:#9CDCFE;"> aid1</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">643755790</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> final</span><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> bv1</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"BV1bY4y1j7RA"</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> final</span><span style="color:#4EC9B0;"> int</span><span style="color:#9CDCFE;"> aid2</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">305988942</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> final</span><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> bv2</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"BV1aP411K7it"</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> //av ==> bv</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> assert</span><span style="color:#DCDCAA;"> av2bv</span><span style="color:#D4D4D4;">(aid1).</span><span style="color:#DCDCAA;">equals</span><span style="color:#D4D4D4;">(bv1);</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> assert</span><span style="color:#DCDCAA;"> av2bv</span><span style="color:#D4D4D4;">(aid2).</span><span style="color:#DCDCAA;">equals</span><span style="color:#D4D4D4;">(bv2);</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> //bv ==>av</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> assert</span><span style="color:#DCDCAA;"> bv2av</span><span style="color:#D4D4D4;">(bv1) == aid1;</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> assert</span><span style="color:#DCDCAA;"> bv2av</span><span style="color:#D4D4D4;">(bv2) == aid2;</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="golang" tabindex="-1"><a class="header-anchor" href="#golang"><span>Golang</span></a></h3><div class="language-go line-numbers-mode" data-highlighter="shiki" data-ext="go" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-go"><span class="line"><span style="color:#569CD6;">package</span><span style="color:#4EC9B0;"> main</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> (</span></span>
|
|||
|
|
<span class="line"><span style="color:#CE9178;"> "fmt"</span></span>
|
|||
|
|
<span class="line"><span style="color:#CE9178;"> "strings"</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">var</span><span style="color:#D4D4D4;"> (</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> XOR_CODE</span><span style="color:#D4D4D4;"> = </span><span style="color:#4EC9B0;">int64</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">23442827791579</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> MAX_CODE</span><span style="color:#D4D4D4;"> = </span><span style="color:#4EC9B0;">int64</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">2251799813685247</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> CHARTS</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"FcwAPNKTMug3GV5Lj7EJnHpWsx4tb8haYeviqBz6rkCy12mUSDQX9RdoZf"</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> PAUL_NUM</span><span style="color:#D4D4D4;"> = </span><span style="color:#4EC9B0;">int64</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">func</span><span style="color:#DCDCAA;"> swapString</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">s</span><span style="color:#4EC9B0;"> string</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">y</span><span style="color:#4EC9B0;"> int</span><span style="color:#D4D4D4;">) </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> chars</span><span style="color:#D4D4D4;"> := []</span><span style="color:#4EC9B0;">rune</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">s</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> chars</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;">], </span><span style="color:#9CDCFE;">chars</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">y</span><span style="color:#D4D4D4;">] = </span><span style="color:#9CDCFE;">chars</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">y</span><span style="color:#D4D4D4;">], </span><span style="color:#9CDCFE;">chars</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;">]</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#4EC9B0;"> string</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">chars</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">func</span><span style="color:#DCDCAA;"> Bvid2Avid</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">bvid</span><span style="color:#4EC9B0;"> string</span><span style="color:#D4D4D4;">) (</span><span style="color:#9CDCFE;">avid</span><span style="color:#4EC9B0;"> int64</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> s</span><span style="color:#D4D4D4;"> := </span><span style="color:#DCDCAA;">swapString</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">swapString</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">bvid</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">9</span><span style="color:#D4D4D4;">), </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">7</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> bv1</span><span style="color:#D4D4D4;"> := </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">([]</span><span style="color:#4EC9B0;">rune</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">s</span><span style="color:#D4D4D4;">)[</span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">:])</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> temp</span><span style="color:#D4D4D4;"> := </span><span style="color:#4EC9B0;">int64</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#9CDCFE;"> _</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;"> := </span><span style="color:#C586C0;">range</span><span style="color:#9CDCFE;"> bv1</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> idx</span><span style="color:#D4D4D4;"> := </span><span style="color:#9CDCFE;">strings</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IndexRune</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">CHARTS</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> temp</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">temp</span><span style="color:#D4D4D4;">*</span><span style="color:#9CDCFE;">PAUL_NUM</span><span style="color:#D4D4D4;"> + </span><span style="color:#4EC9B0;">int64</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">idx</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> avid</span><span style="color:#D4D4D4;"> = (</span><span style="color:#9CDCFE;">temp</span><span style="color:#D4D4D4;"> & </span><span style="color:#9CDCFE;">MAX_CODE</span><span style="color:#D4D4D4;">) ^ </span><span style="color:#9CDCFE;">XOR_CODE</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">func</span><span style="color:#DCDCAA;"> Avid2Bvid</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">avid</span><span style="color:#4EC9B0;"> int64</span><span style="color:#D4D4D4;">) (</span><span style="color:#9CDCFE;">bvid</span><span style="color:#4EC9B0;"> string</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> arr</span><span style="color:#D4D4D4;"> := [</span><span style="color:#B5CEA8;">12</span><span style="color:#D4D4D4;">]</span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">{</span><span style="color:#CE9178;">"B"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"V"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"1"</span><span style="color:#D4D4D4;">}</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> bvIdx</span><span style="color:#D4D4D4;"> := </span><span style="color:#DCDCAA;">len</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">arr</span><span style="color:#D4D4D4;">) - </span><span style="color:#B5CEA8;">1</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> temp</span><span style="color:#D4D4D4;"> := (</span><span style="color:#9CDCFE;">avid</span><span style="color:#D4D4D4;"> | (</span><span style="color:#9CDCFE;">MAX_CODE</span><span style="color:#D4D4D4;"> + </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">)) ^ </span><span style="color:#9CDCFE;">XOR_CODE</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#9CDCFE;"> temp</span><span style="color:#D4D4D4;"> > </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> idx</span><span style="color:#D4D4D4;"> := </span><span style="color:#9CDCFE;">temp</span><span style="color:#D4D4D4;"> % </span><span style="color:#9CDCFE;">PAUL_NUM</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> arr</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">bvIdx</span><span style="color:#D4D4D4;">] = </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">CHARTS</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">idx</span><span style="color:#D4D4D4;">])</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> temp</span><span style="color:#D4D4D4;"> /= </span><span style="color:#9CDCFE;">PAUL_NUM</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> bvIdx</span><span style="color:#D4D4D4;">--</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> raw</span><span style="color:#D4D4D4;"> := </span><span style="color:#9CDCFE;">strings</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Join</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">arr</span><span style="color:#D4D4D4;">[:], </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> bvid</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">swapString</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">swapString</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">raw</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">9</span><span style="color:#D4D4D4;">), </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">7</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">func</span><span style="color:#DCDCAA;"> main</span><span style="color:#D4D4D4;">() {</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> avid</span><span style="color:#D4D4D4;"> := </span><span style="color:#4EC9B0;">int64</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">1054803170</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> bvid</span><span style="color:#D4D4D4;"> := </span><span style="color:#CE9178;">"BV1mH4y1u7UA"</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> resAvid</span><span style="color:#D4D4D4;"> := </span><span style="color:#DCDCAA;">Bvid2Avid</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">bvid</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> resBvid</span><span style="color:#D4D4D4;"> := </span><span style="color:#DCDCAA;">Avid2Bvid</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">avid</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> fmt</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Printf</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"convert bvid to avid: </span><span style="color:#9CDCFE;">%v</span><span style="color:#D7BA7D;">\\t</span><span style="color:#CE9178;">value:</span><span style="color:#9CDCFE;">%v</span><span style="color:#D7BA7D;">\\n</span><span style="color:#CE9178;">"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">avid</span><span style="color:#D4D4D4;"> == </span><span style="color:#9CDCFE;">resAvid</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">resAvid</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> fmt</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Printf</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"convert avid to bvid: </span><span style="color:#9CDCFE;">%v</span><span style="color:#D7BA7D;">\\t</span><span style="color:#CE9178;">value:</span><span style="color:#9CDCFE;">%v</span><span style="color:#D7BA7D;">\\n</span><span style="color:#CE9178;">"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">bvid</span><span style="color:#D4D4D4;"> == </span><span style="color:#9CDCFE;">resBvid</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">resBvid</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="c" tabindex="-1"><a class="header-anchor" href="#c"><span>C++</span></a></h3><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-cpp"><span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> <algorithm></span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> <cassert></span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> <print></span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> <string></span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">constexpr</span><span style="color:#569CD6;"> int64_t</span><span style="color:#D4D4D4;"> XOR_CODE = </span><span style="color:#B5CEA8;">0x1552356C4CDB</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">constexpr</span><span style="color:#569CD6;"> int64_t</span><span style="color:#D4D4D4;"> MAX_AID = </span><span style="color:#B5CEA8;">0x8000000000000</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">constexpr</span><span style="color:#569CD6;"> int64_t</span><span style="color:#D4D4D4;"> MASK_CODE = MAX_AID - </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">constexpr</span><span style="color:#569CD6;"> int64_t</span><span style="color:#D4D4D4;"> BASE = </span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">constexpr</span><span style="color:#569CD6;"> char</span><span style="color:#9CDCFE;"> Table</span><span style="color:#D4D4D4;">[BASE + </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">] = </span><span style="color:#CE9178;">"FcwAPNKTMug3GV5Lj7EJnHpWsx4tb8haYeviqBz6rkCy12mUSDQX9RdoZf"</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">constexpr</span><span style="color:#569CD6;"> char</span><span style="color:#9CDCFE;"> ReverseTable</span><span style="color:#D4D4D4;">[</span><span style="color:#B5CEA8;">128</span><span style="color:#D4D4D4;">] = {</span></span>
|
|||
|
|
<span class="line"><span style="color:#B5CEA8;"> 0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">,</span></span>
|
|||
|
|
<span class="line"><span style="color:#B5CEA8;"> 0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">,</span></span>
|
|||
|
|
<span class="line"><span style="color:#B5CEA8;"> 0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">,</span></span>
|
|||
|
|
<span class="line"><span style="color:#B5CEA8;"> 0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x2c</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x2d</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x0b</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x1a</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x0e</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x27</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x11</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x1d</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x34</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">,</span></span>
|
|||
|
|
<span class="line"><span style="color:#B5CEA8;"> 0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x03</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x25</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x2a</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x31</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x12</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x0c</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x15</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x13</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x06</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x0f</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x08</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x05</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">,</span></span>
|
|||
|
|
<span class="line"><span style="color:#B5CEA8;"> 0x04</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x32</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x35</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x30</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x07</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x2f</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x0d</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x17</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x33</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x20</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x38</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">,</span></span>
|
|||
|
|
<span class="line"><span style="color:#B5CEA8;"> 0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x1f</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x1c</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x01</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x36</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x21</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x39</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x0a</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x1e</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x23</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x10</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x29</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x2e</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x14</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x37</span><span style="color:#D4D4D4;">,</span></span>
|
|||
|
|
<span class="line"><span style="color:#B5CEA8;"> 0x16</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x24</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x28</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x18</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x1b</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x09</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x22</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x02</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x19</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x2b</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x26</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0x00</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">};</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;">std</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">string</span><span style="color:#DCDCAA;"> Av2bv</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">const</span><span style="color:#569CD6;"> int64_t</span><span style="color:#9CDCFE;"> Avid</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> assert</span><span style="color:#D4D4D4;">(Avid > </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;"> && </span><span style="color:#CE9178;">"Avid must be greater than 0"</span><span style="color:#D4D4D4;">);</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> std</span><span style="color:#D4D4D4;">::string bv = </span><span style="color:#CE9178;">"BV1"</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> bv</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">resize</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">12</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'</span><span style="color:#D7BA7D;">\\0</span><span style="color:#CE9178;">'</span><span style="color:#D4D4D4;">);</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> int64_t</span><span style="color:#D4D4D4;"> tmp = (Avid | MAX_AID) ^ XOR_CODE;</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (</span><span style="color:#569CD6;">size_t</span><span style="color:#D4D4D4;"> i = </span><span style="color:#9CDCFE;">bv</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">size</span><span style="color:#D4D4D4;">() - </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">; tmp > </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;"> && i > </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">; --i) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> bv</span><span style="color:#D4D4D4;">[i] = </span><span style="color:#9CDCFE;">Table</span><span style="color:#D4D4D4;">[tmp % BASE];</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> tmp /= BASE;</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> std</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">ranges</span><span style="color:#D4D4D4;">::</span><span style="color:#DCDCAA;">swap</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">bv</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">at</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">), </span><span style="color:#9CDCFE;">bv</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">at</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">9</span><span style="color:#D4D4D4;">));</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> std</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">ranges</span><span style="color:#D4D4D4;">::</span><span style="color:#DCDCAA;">swap</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">bv</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">at</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">), </span><span style="color:#9CDCFE;">bv</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">at</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">7</span><span style="color:#D4D4D4;">));</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> bv;</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">int64_t</span><span style="color:#DCDCAA;"> Bv2av</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">const</span><span style="color:#4EC9B0;"> std</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">string</span><span style="color:#569CD6;"> &</span><span style="color:#9CDCFE;">Bvid</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> assert</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Bvid</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">starts_with</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"BV1"</span><span style="color:#D4D4D4;">) && </span><span style="color:#CE9178;">"Bvid must start with 'BV1'"</span><span style="color:#D4D4D4;">);</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> auto</span><span style="color:#D4D4D4;"> Bvid_ = Bvid;</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> std</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">ranges</span><span style="color:#D4D4D4;">::</span><span style="color:#DCDCAA;">swap</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Bvid_</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">at</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">), </span><span style="color:#9CDCFE;">Bvid_</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">at</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">9</span><span style="color:#D4D4D4;">));</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> std</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">ranges</span><span style="color:#D4D4D4;">::</span><span style="color:#DCDCAA;">swap</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Bvid_</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">at</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">), </span><span style="color:#9CDCFE;">Bvid_</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">at</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">7</span><span style="color:#D4D4D4;">));</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> int64_t</span><span style="color:#D4D4D4;"> tmp = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (</span><span style="color:#569CD6;">int</span><span style="color:#D4D4D4;"> i = </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">; i < </span><span style="color:#9CDCFE;">Bvid_</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">size</span><span style="color:#D4D4D4;">(); ++i) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> tmp = </span><span style="color:#9CDCFE;">ReverseTable</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">Bvid_</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">at</span><span style="color:#D4D4D4;">(i)] + BASE * tmp;</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> (tmp & MASK_CODE) ^ XOR_CODE;</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">int</span><span style="color:#DCDCAA;"> main</span><span style="color:#D4D4D4;">() {</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> assert</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">Av2bv</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">1004871019</span><span style="color:#D4D4D4;">) == </span><span style="color:#CE9178;">"BV16x4y1H7M1"</span><span style="color:#D4D4D4;">);</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> assert</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">Bv2av</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"BV16x4y1H7M1"</span><span style="color:#D4D4D4;">) == </span><span style="color:#B5CEA8;">1004871019</span><span style="color:#D4D4D4;">);</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="���蝞埈�摮䀹﹝" tabindex="-1"><a class="header-anchor" href="#���蝞埈�摮䀹﹝"><span>���蝞埈�摮䀹﹝</span></a></h2><p><strong>隞乩�蝞埈�撌脣仃��</strong>嚗𣬚�閫���賣㺭�澆��厰�嚗䔶��刻�雿輻鍂嚗�銁甇支�雿靝蛹摮䀹﹝</p><details><summary>�亦��睃���捆嚗�</summary><p>蝞埈�����䌊<a href="https://www.bilibili.com/video/BV1N741127Tj" target="_blank" rel="noopener noreferrer">�鞉号蝘塩�鬭v�瑁蓮bv�瑞�餈��</a></p><h3 id="av-bv蝞埈�-1" tabindex="-1"><a class="header-anchor" href="#av-bv蝞埈�-1"><span>av->bv蝞埈�</span></a></h3><p>瘜剁��祉�瘜訫�蝷箔�蝔见�隞��蝻𤥁圾��<code>avid < 29460791296</code>嚗䔶����瘜閖�霂�<code>avid >= 29460791296</code>��迤蝖格�� �齿釣嚗𡁏𧋦鈭箔�皜���啁�瘜閗��衣�閫��<code>avid >= 29460791296</code></p><ol><li>a = (avid �� 177451812) + 100618342136696320</li><li>隞� i 銝箏儐�臬��誩儐�� 6 甈� b[i] = (a / 58 ^ i) % 58</li><li>撠� b[i] 銝剖�銝芣㺭摮𡑒蓮�V蛹隞乩���”銝剔�摮㛖泵</li></ol><p>��”嚗�</p><blockquote><p>fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF</p></blockquote><ol start="4"><li><p>�嘥��硋�蝚虫葡 b[i]=<code></code></p></li><li><p>�厩�隞乩�摮㛖泵憿箏�蝻𣇉�銵函���僎憛怠��� b[i]</p></li></ol><p>摮㛖泵憿箏�蝻𣇉�銵剁�</p><blockquote><p>0 -> 9</p><p>1 -> 8</p><p>2 -> 1</p><p>3 -> 6</p><p>4 -> 2</p><p>5 -> 4</p><p>6 -> 0</p><p>7 -> 7</p><p>8 -> 3</p><p>9 -> 5</p></blockquote><h3 id="bv-av蝞埈�-1" tabindex="-1"><a class="header-anchor" href="#bv-av蝞埈�-1"><span>bv->av蝞埈�</span></a></h3><p>銝箔誑銝羓�瘜閧����蝞�</p><h3 id="蝻𣇉�摰䂿緵-1" tabindex="-1"><a class="header-anchor" href="#蝻𣇉�摰䂿緵-1"><span>蝻𣇉�摰䂿緵</span></a></h3><p>雿輻鍂 Python C TypeScript Java Kotlin Golang Rust 蝑㕑祗閮�雿靝蛹蝷箔�嚗峕洽餈𡒊冗�箸�鈭斗凒憭帋�蝔�</p><h4 id="python-1" tabindex="-1"><a class="header-anchor" href="#python-1"><span>Python</span></a></h4><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-python"><span class="line"><span style="color:#D4D4D4;">XOR = </span><span style="color:
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">ADD = </span><span style="color:#B5CEA8;">100618342136696320</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">TABLE = </span><span style="color:#CE9178;">"fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF"</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">MAP = </span><span style="color:#B5CEA8;">9</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">8</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">7</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">5</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">def</span><span style="color:#DCDCAA;"> av2bv</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">av</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">int</span><span style="color:#D4D4D4;">) -> </span><span style="color:#4EC9B0;">str</span><span style="color:#D4D4D4;">:</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> av = (av ^ XOR) + ADD</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> bv = [</span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">] * </span><span style="color:#B5CEA8;">10</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> i </span><span style="color:#C586C0;">in</span><span style="color:#DCDCAA;"> range</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">):</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> bv[MAP[i]] = TABLE[(av // </span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">**i) % </span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">]</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#CE9178;"> ""</span><span style="color:#D4D4D4;">.join(bv)</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">def</span><span style="color:#DCDCAA;"> bv2av</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">bv</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">int</span><span style="color:#D4D4D4;">) -> </span><span style="color:#4EC9B0;">int</span><span style="color:#D4D4D4;">:</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> av = [</span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">] * </span><span style="color:#B5CEA8;">10</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> s = </span><span style="color:#B5CEA8;">0</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> i </span><span style="color:#C586C0;">in</span><span style="color:#DCDCAA;"> range</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">):</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> s += TABLE.find(bv[MAP[i]]) * </span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">**i</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> av = (s - ADD) ^ XOR</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> av</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">def</span><span style="color:#DCDCAA;"> main</span><span style="color:#D4D4D4;">():</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> while</span><span style="color:#B5CEA8;"> 1</span><span style="color:#D4D4D4;">:</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> mode = </span><span style="color:#DCDCAA;">input</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"1. AV to BV</span><span style="color:#D7BA7D;">\\n</span><span style="color:#CE9178;">2. BV to AV</span><span style="color:#D7BA7D;">\\n</span><span style="color:#CE9178;">3. Exit</span><span style="color:#D7BA7D;">\\n</span><span style="color:#CE9178;">雿删��㗇𥋘嚗�"</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> mode == </span><span style="color:#CE9178;">"1"</span><span style="color:#D4D4D4;">:</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> print</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">f</span><span style="color:#CE9178;">"BV�瑟糓嚗鋳V </span><span style="color:#569CD6;">{</span><span style="color:#D4D4D4;">av2bv(</span><span style="color:#4EC9B0;">int</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">input</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'AV�瑟糓嚗�'</span><span style="color:#D4D4D4;">)))</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">"</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> elif</span><span style="color:#D4D4D4;"> mode == </span><span style="color:#CE9178;">"2"</span><span style="color:#D4D4D4;">:</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> print</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">f</span><span style="color:#CE9178;">"AV�瑟糓嚗鋫V </span><span style="color:#569CD6;">{</span><span style="color:#D4D4D4;">bv2av(</span><span style="color:#DCDCAA;">input</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'BV�瑟糓嚗�'</span><span style="color:#D4D4D4;">))</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">"</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> elif</span><span style="color:#D4D4D4;"> mode == </span><span style="color:#CE9178;">"3"</span><span style="color:#D4D4D4;">:</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> break</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> else</span><span style="color:#D4D4D4;">:</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> print</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"颲枏��躰秤霂琿��啗���"</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;">if</span><span style="color:#9CDCFE;"> __name__</span><span style="color:#D4D4D4;"> == </span><span style="color:#CE9178;">"__main__"</span><span style="color:#D4D4D4;">:</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> main()</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="c-1" tabindex="-1"><a class="header-anchor" href="#c-1"><span>C</span></a></h4><div class="language-c line-numbers-mode" data-highlighter="shiki" data-ext="c" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-c"><span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> <stdio.h></span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> <stdlib.h></span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> <math.h></span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> <string.h></span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">const</span><span style="color:#569CD6;"> char</span><span style="color:#D4D4D4;"> table</span><span style="color:#569CD6;">[]</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF"</span><span style="color:#D4D4D4;">;</span><span style="color:#6A9955;"> // ��”</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">char</span><span style="color:#9CDCFE;"> tr</span><span style="color:#D4D4D4;">[</span><span style="color:#B5CEA8;">124</span><span style="color:#D4D4D4;">];</span><span style="color:#6A9955;"> // �齿䰻��”</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">const</span><span style="color:#569CD6;"> unsigned</span><span style="color:#569CD6;"> long</span><span style="color:#569CD6;"> long</span><span style="color:#D4D4D4;"> XOR = </span><span style="color:#B5CEA8;">177451812</span><span style="color:#D4D4D4;">;</span><span style="color:#6A9955;"> // �箏�撘����</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">const</span><span style="color:#569CD6;"> unsigned</span><span style="color:#569CD6;"> long</span><span style="color:#569CD6;"> long</span><span style="color:#D4D4D4;"> ADD = </span><span style="color:#B5CEA8;">8728348608</span><span style="color:#D4D4D4;">;</span><span style="color:#6A9955;"> // �箏��䭾���</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">const</span><span style="color:#569CD6;"> int</span><span style="color:#D4D4D4;"> s</span><span style="color:#569CD6;">[]</span><span style="color:#D4D4D4;"> = {</span><span style="color:#B5CEA8;">11</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">8</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">};</span><span style="color:#6A9955;"> // 雿滨蔭蝻𣇉�銵�</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;">// �嘥��硋��亦�銵�</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">void</span><span style="color:#DCDCAA;"> tr_init</span><span style="color:#D4D4D4;">() {</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (</span><span style="color:#569CD6;">int</span><span style="color:#D4D4D4;"> i = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">; i < </span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">; i++)</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> tr</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">table</span><span style="color:#D4D4D4;">[i]] = i;</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">unsigned</span><span style="color:#569CD6;"> long</span><span style="color:#569CD6;"> long</span><span style="color:#DCDCAA;"> bv2av</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">char</span><span style="color:#9CDCFE;"> bv</span><span style="color:#569CD6;">[]</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> unsigned</span><span style="color:#569CD6;"> long</span><span style="color:#569CD6;"> long</span><span style="color:#D4D4D4;"> r = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> unsigned</span><span style="color:#569CD6;"> long</span><span style="color:#569CD6;"> long</span><span style="color:#D4D4D4;"> av;</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (</span><span style="color:#569CD6;">int</span><span style="color:#D4D4D4;"> i = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">; i < </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">; i++)</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> r += </span><span style="color:#9CDCFE;">tr</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">bv</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">s</span><span style="color:#D4D4D4;">[i]]] * (</span><span style="color:#569CD6;">unsigned</span><span style="color:#569CD6;"> long</span><span style="color:#569CD6;"> long</span><span style="color:#D4D4D4;">)</span><span style="color:#DCDCAA;">pow</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">, i);</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> av = (r - ADD) ^ XOR;</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> av;</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">char</span><span style="color:#D4D4D4;"> *</span><span style="color:#DCDCAA;">av2bv</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">unsigned</span><span style="color:#569CD6;"> long</span><span style="color:#569CD6;"> long</span><span style="color:#9CDCFE;"> av</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> char</span><span style="color:#D4D4D4;"> *result = (</span><span style="color:#569CD6;">char</span><span style="color:#D4D4D4;">*)</span><span style="color:#DCDCAA;">malloc</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">13</span><span style="color:#D4D4D4;">);</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> strcpy</span><span style="color:#D4D4D4;">(result,</span><span style="color:#CE9178;">"BV1 4 1 7 "</span><span style="color:#D4D4D4;">);</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> av = (av ^ XOR) + ADD;</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (</span><span style="color:#569CD6;">int</span><span style="color:#D4D4D4;"> i = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">; i < </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">; i++)</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> result</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">s</span><span style="color:#D4D4D4;">[i]] = </span><span style="color:#9CDCFE;">table</span><span style="color:#D4D4D4;">[(</span><span style="color:#569CD6;">unsigned</span><span style="color:#569CD6;"> long</span><span style="color:#569CD6;"> long</span><span style="color:#D4D4D4;">)(av / (</span><span style="color:#569CD6;">unsigned</span><span style="color:#569CD6;"> long</span><span style="color:#569CD6;"> long</span><span style="color:#D4D4D4;">)</span><span style="color:#DCDCAA;">pow</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">, i)) % </span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">];</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> result;</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">int</span><span style="color:#DCDCAA;"> main</span><span style="color:#D4D4D4;">() {</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> tr_init</span><span style="color:#D4D4D4;">();</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> printf</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"</span><span style="color:#9CDCFE;">%s</span><span style="color:#D7BA7D;">\\n</span><span style="color:#CE9178;">"</span><span style="color:#D4D4D4;">, </span><span style="color:#DCDCAA;">av2bv</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">170001</span><span style="color:#D4D4D4;">));</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> printf</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"</span><span style="color:#9CDCFE;">%u</span><span style="color:#D7BA7D;">\\n</span><span style="color:#CE9178;">"</span><span style="color:#D4D4D4;">, </span><span style="color:#DCDCAA;">bv2av</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"BV17x411w7KC"</span><span style="color:#D4D4D4;">));</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#B5CEA8;"> 0</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>颲枏枂銝綽�</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-"><span class="line"><span>BV17x411w7KC</span></span>
|
|||
|
|
<span class="line"><span>170001</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="typescript" tabindex="-1"><a class="header-anchor" href="#typescript"><span>TypeScript</span></a></h4><p>�蠘陝<a href="https://github.com/SocialSisterYi/bilibili-API-collect/issues/417#issuecomment-1186475063" target="_blank" rel="noopener noreferrer">#417</a>�𣂷�</p><div class="language-typescript line-numbers-mode" data-highlighter="shiki" data-ext="typescript" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-typescript"><span class="line"><span style="color:#C586C0;">export</span><span style="color:#C586C0;"> default</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> BvCode</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#9CDCFE;"> TABEL</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">'fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF'</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">// ��”</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#9CDCFE;"> TR</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">Record</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">number</span><span style="color:#D4D4D4;">> = {}; </span><span style="color:#6A9955;">// �齿䰻��”</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#9CDCFE;"> S</span><span style="color:#D4D4D4;"> = [</span><span style="color:#B5CEA8;">11</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">8</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">]; </span><span style="color:#6A9955;">// 雿滨蔭蝻𣇉�銵�</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#9CDCFE;"> XOR</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">177451812</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">// �箏�撘����</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#9CDCFE;"> ADD</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">8728348608</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">// �箏��䭾���</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> constructor</span><span style="color:#D4D4D4;">() {</span></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> // �嘥��硋��亦�銵�</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> const</span><span style="color:#4FC1FF;"> len</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">this</span><span style="color:#D4D4D4;">.</span><span style="color:#4FC1FF;">TABEL</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">length</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (</span><span style="color:#569CD6;">let</span><span style="color:#9CDCFE;"> i</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">; </span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;"> < </span><span style="color:#9CDCFE;">len</span><span style="color:#D4D4D4;">; </span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">++) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> this</span><span style="color:#D4D4D4;">.</span><span style="color:#4FC1FF;">TR</span><span style="color:#D4D4D4;">[</span><span style="color:#569CD6;">this</span><span style="color:#D4D4D4;">.</span><span style="color:#4FC1FF;">TABEL</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">]] = </span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> av2bv</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">av</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">number</span><span style="color:#D4D4D4;">): </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> const</span><span style="color:#4FC1FF;"> x_</span><span style="color:#D4D4D4;"> = (</span><span style="color:#9CDCFE;">av</span><span style="color:#D4D4D4;"> ^ </span><span style="color:#569CD6;">this</span><span style="color:#D4D4D4;">.</span><span style="color:#4FC1FF;">XOR</span><span style="color:#D4D4D4;">) + </span><span style="color:#569CD6;">this</span><span style="color:#D4D4D4;">.</span><span style="color:#4FC1FF;">ADD</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> const</span><span style="color:#4FC1FF;"> r</span><span style="color:#D4D4D4;"> = [</span><span style="color:#CE9178;">'B'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'V'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'1'</span><span style="color:#D4D4D4;">, , , </span><span style="color:#CE9178;">'4'</span><span style="color:#D4D4D4;">, , </span><span style="color:#CE9178;">'1'</span><span style="color:#D4D4D4;">, , </span><span style="color:#CE9178;">'7'</span><span style="color:#D4D4D4;">];</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (</span><span style="color:#569CD6;">let</span><span style="color:#9CDCFE;"> i</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">; </span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;"> < </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">; </span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">++) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> r</span><span style="color:#D4D4D4;">[</span><span style="color:#569CD6;">this</span><span style="color:#D4D4D4;">.</span><span style="color:#4FC1FF;">S</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">]] = </span><span style="color:#569CD6;">this</span><span style="color:#D4D4D4;">.</span><span style="color:#4FC1FF;">TABEL</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">Math</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">floor</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">x_</span><span style="color:#D4D4D4;"> / </span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;"> ** </span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">) % </span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">];</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> r</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">join</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">''</span><span style="color:#D4D4D4;">);</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> bv2av</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">bv</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">): </span><span style="color:#4EC9B0;">number</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> let</span><span style="color:#9CDCFE;"> r</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (</span><span style="color:#569CD6;">let</span><span style="color:#9CDCFE;"> i</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">; </span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;"> < </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">; </span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">++) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> r</span><span style="color:#D4D4D4;"> += </span><span style="color:#569CD6;">this</span><span style="color:#D4D4D4;">.</span><span style="color:#4FC1FF;">TR</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">bv</span><span style="color:#D4D4D4;">[</span><span style="color:#569CD6;">this</span><span style="color:#D4D4D4;">.</span><span style="color:#4FC1FF;">S</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">]]] * </span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;"> ** </span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">r</span><span style="color:#D4D4D4;"> - </span><span style="color:#569CD6;">this</span><span style="color:#D4D4D4;">.</span><span style="color:#4FC1FF;">ADD</span><span style="color:#D4D4D4;">) ^ </span><span style="color:#569CD6;">this</span><span style="color:#D4D4D4;">.</span><span style="color:#4FC1FF;">XOR</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> bvcode</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> BvCode</span><span style="color:#D4D4D4;">();</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;">console</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">log</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">bvcode</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">av2bv</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">170001</span><span style="color:#D4D4D4;">));</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;">console</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">log</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">bvcode</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">bv2av</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'BV17x411w7KC'</span><span style="color:#D4D4D4;">));</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>颲枏枂銝綽�</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-"><span class="line"><span>BV17x411w7KC</span></span>
|
|||
|
|
<span class="line"><span>170001</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="java-1" tabindex="-1"><a class="header-anchor" href="#java-1"><span>Java</span></a></h4><div class="language-java line-numbers-mode" data-highlighter="shiki" data-ext="java" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-java"><span class="line"><span style="color:#6A9955;">/**</span></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> * 蝞埈��亥䌊嚗冴ttps://www.zhihu.com/question/381784377/answer/1099438784</span></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> */</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Util</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#569CD6;"> final</span><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> TABLE</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF"</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#569CD6;"> final</span><span style="color:#4EC9B0;"> int</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">S</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#4EC9B0;"> int</span><span style="color:#D4D4D4;">[]{</span><span style="color:#B5CEA8;">11</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">8</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">};</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#569CD6;"> final</span><span style="color:#4EC9B0;"> int</span><span style="color:#9CDCFE;"> XOR</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">177451812</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#569CD6;"> final</span><span style="color:#4EC9B0;"> long</span><span style="color:#9CDCFE;"> ADD</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">8728348608L</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#569CD6;"> final</span><span style="color:#4EC9B0;"> Map</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Character</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Integer</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">MAP</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#4EC9B0;"> HashMap</span><span style="color:#D4D4D4;"><>();</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> static</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (</span><span style="color:#4EC9B0;">int</span><span style="color:#9CDCFE;"> i</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">; i < </span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">; i++) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> MAP</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">put</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">TABLE</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">charAt</span><span style="color:#D4D4D4;">(i), i);</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> String</span><span style="color:#DCDCAA;"> aidToBvid</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">int</span><span style="color:#9CDCFE;"> aid</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> long</span><span style="color:#9CDCFE;"> x</span><span style="color:#D4D4D4;"> = (aid ^ XOR) + ADD;</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> char</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">chars</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#4EC9B0;"> char</span><span style="color:#D4D4D4;">[]{</span><span style="color:#CE9178;">'B'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'V'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'1'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">' '</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">' '</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'4'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">' '</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'1'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">' '</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'7'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">' '</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">' '</span><span style="color:#D4D4D4;">};</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (</span><span style="color:#4EC9B0;">int</span><span style="color:#9CDCFE;"> i</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">; i < </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">; i++) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> int</span><span style="color:#9CDCFE;"> pow</span><span style="color:#D4D4D4;"> = (</span><span style="color:#4EC9B0;">int</span><span style="color:#D4D4D4;">) </span><span style="color:#9CDCFE;">Math</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">pow</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">, i);</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> long</span><span style="color:#9CDCFE;"> i1</span><span style="color:#D4D4D4;"> = x / pow;</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> int</span><span style="color:#9CDCFE;"> index</span><span style="color:#D4D4D4;"> = (</span><span style="color:#4EC9B0;">int</span><span style="color:#D4D4D4;">) (i1 % </span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">);</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> chars[</span><span style="color:#4EC9B0;">S</span><span style="color:#D4D4D4;">[i]] = </span><span style="color:#9CDCFE;">TABLE</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">charAt</span><span style="color:#D4D4D4;">(index);</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> String</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">valueOf</span><span style="color:#D4D4D4;">(chars);</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> int</span><span style="color:#DCDCAA;"> bvidToAid</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">String</span><span style="color:#9CDCFE;"> bvid</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#4EC9B0;"> long</span><span style="color:#9CDCFE;"> r</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (</span><span style="color:#4EC9B0;">int</span><span style="color:#9CDCFE;"> i</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">; i < </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">; i++) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> r += </span><span style="color:#9CDCFE;">MAP</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">get</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">bvid</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">charAt</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">S</span><span style="color:#D4D4D4;">[i])) * </span><span style="color:#9CDCFE;">Math</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">pow</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">, i);</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> (</span><span style="color:#4EC9B0;">int</span><span style="color:#D4D4D4;">) ((r - ADD) ^ XOR);</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="kotlin" tabindex="-1"><a class="header-anchor" href="#kotlin"><span>Kotlin</span></a></h4><div class="language-kotlin line-numbers-mode" data-highlighter="shiki" data-ext="kotlin" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-kotlin"><span class="line"><span style="color:#6A9955;">/**</span></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> * 甇斤�摨誯�摰���笔�嚗峕㺿蝻𤥁䌊GH蝡坔��𣂼之雿祉�Java蝔见�嚗䔶耨�嫣��典�隞��嚗䔶�頧祆揢銝摘otlin</span></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> * 蝞埈��交��䔶�</span></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> */</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">object</span><span style="color:#4EC9B0;"> VideoUtils</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> //餈䠷��舐眏�乩�憭找蓮銝滨䰻�梶鍂隞�銋�䲮瘜訫��箇�頧祆揢�冽㺭摮�</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#D4D4D4;"> ss = </span><span style="color:#DCDCAA;">intArrayOf</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">11</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">8</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">9</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">5</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">7</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#D4D4D4;"> xor: </span><span style="color:#4EC9B0;">Long</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">177451812</span><span style="color:#6A9955;"> //鈭諹��嗆𧒄�惩���1</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#D4D4D4;"> add = </span><span style="color:#B5CEA8;">8728348608L</span><span style="color:#6A9955;"> //����嗆𧒄�惩���2</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> //�㗛��嘥��硋極雿頣��㰘蝸���銵�</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> const</span><span style="color:#569CD6;"> val</span><span style="color:#D4D4D4;"> table = </span><span style="color:#CE9178;">"fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF"</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> val</span><span style="color:#D4D4D4;"> mp = </span><span style="color:#DCDCAA;">HashMap</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Int</span><span style="color:#D4D4D4;">>()</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> val</span><span style="color:#D4D4D4;"> mp2 = </span><span style="color:#DCDCAA;">HashMap</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Int</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">>()</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> //�啣銁嚗��銋学v�瑕�bv�瑚�頧祉��寞�</span></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;">//摰帋�銝�銝況ower銋䀹䲮�寞�嚗諹��航蓮�Z��嗅�閬��</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> fun</span><span style="color:#DCDCAA;"> power</span><span style="color:#D4D4D4;">(a: </span><span style="color:#4EC9B0;">Int</span><span style="color:#D4D4D4;">, b: </span><span style="color:#4EC9B0;">Int</span><span style="color:#D4D4D4;">): </span><span style="color:#4EC9B0;">Long</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#D4D4D4;"> power: </span><span style="color:#4EC9B0;">Long</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">1</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (c </span><span style="color:#569CD6;">in</span><span style="color:#B5CEA8;"> 0</span><span style="color:#D4D4D4;"> until b) power *= a.</span><span style="color:#DCDCAA;">toLong</span><span style="color:#D4D4D4;">()</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> power</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> //bv頧柑v�寞�</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> fun</span><span style="color:#DCDCAA;"> bv2av</span><span style="color:#D4D4D4;">(s: </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">): </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#D4D4D4;"> r: </span><span style="color:#4EC9B0;">Long</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">0</span></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> //58餈𥕦�頧祆揢</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (i </span><span style="color:#569CD6;">in</span><span style="color:#B5CEA8;"> 0</span><span style="color:#D4D4D4;">..</span><span style="color:#B5CEA8;">57</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> val</span><span style="color:#D4D4D4;"> s1 = table.</span><span style="color:#DCDCAA;">substring</span><span style="color:#D4D4D4;">(i, i + </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> mp[s1] = i</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (i </span><span style="color:#569CD6;">in</span><span style="color:#B5CEA8;"> 0</span><span style="color:#D4D4D4;">..</span><span style="color:#B5CEA8;">5</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> r += mp[s.</span><span style="color:#DCDCAA;">substring</span><span style="color:#D4D4D4;">(ss[i], ss[i] + </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">)]!! * </span><span style="color:#DCDCAA;">power</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">, i)</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> //頧祆揢摰峕��𠬍���閬�����撣虫�銝支葵�𤩺㦤��</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> (r - add xor xor).</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">()</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> //av頧枴v�寞�</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> fun</span><span style="color:#DCDCAA;"> av2bv</span><span style="color:#D4D4D4;">(st: </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">): </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> try</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#D4D4D4;"> s = java.lang.Long.</span><span style="color:#DCDCAA;">valueOf</span><span style="color:#D4D4D4;">(st.</span><span style="color:#DCDCAA;">split</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"av"</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toRegex</span><span style="color:#D4D4D4;">()).</span><span style="color:#DCDCAA;">dropLastWhile</span><span style="color:#D4D4D4;"> { it.</span><span style="color:#DCDCAA;">isEmpty</span><span style="color:#D4D4D4;">() }</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">toTypedArray</span><span style="color:#D4D4D4;">()[</span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">])</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> val</span><span style="color:#D4D4D4;"> sb = </span><span style="color:#DCDCAA;">StringBuffer</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"BV1 4 1 7 "</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> //����肽楝嚗��撠���箸㺭餈睃�</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> s = (s xor xor) + add</span></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;"> //58餈𥕦�頧砍�</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (i </span><span style="color:#569CD6;">in</span><span style="color:#B5CEA8;"> 0</span><span style="color:#D4D4D4;">..</span><span style="color:#B5CEA8;">57</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> val</span><span style="color:#D4D4D4;"> s1 = table.</span><span style="color:#DCDCAA;">substring</span><span style="color:#D4D4D4;">(i, i + </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> mp2[i] = s1</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (i </span><span style="color:#569CD6;">in</span><span style="color:#B5CEA8;"> 0</span><span style="color:#D4D4D4;">..</span><span style="color:#B5CEA8;">5</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> val</span><span style="color:#D4D4D4;"> r = mp2[(s / </span><span style="color:#DCDCAA;">power</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">, i) % </span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">toInt</span><span style="color:#D4D4D4;">()]</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> sb.</span><span style="color:#DCDCAA;">replace</span><span style="color:#D4D4D4;">(ss[i], ss[i] + </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">, r!!)</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> sb.</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">()</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> } </span><span style="color:#569CD6;">catch</span><span style="color:#D4D4D4;"> (e: </span><span style="color:#4EC9B0;">ArrayIndexOutOfBoundsException</span><span style="color:#D4D4D4;">) {</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#CE9178;"> ""</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="golang-1" tabindex="-1"><a class="header-anchor" href="#golang-1"><span>Golang</span></a></h4><div class="language-go line-numbers-mode" data-highlighter="shiki" data-ext="go" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-go"><span class="line"><span style="color:#569CD6;">package</span><span style="color:#4EC9B0;"> main</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;">import</span><span style="color:#CE9178;"> "math"</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> TABLE</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF"</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">var</span><span style="color:#9CDCFE;"> S</span><span style="color:#D4D4D4;"> = [</span><span style="color:#B5CEA8;">11</span><span style="color:#D4D4D4;">]</span><span style="color:#4EC9B0;">uint</span><span style="color:#D4D4D4;">{</span><span style="color:#B5CEA8;">11</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">8</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">}</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> XOR</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">177451812</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> ADD</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">8728348608</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">var</span><span style="color:#9CDCFE;"> TR</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">map</span><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">]</span><span style="color:#4EC9B0;">int64</span><span style="color:#D4D4D4;">{}</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;">// �嘥��� TR</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">func</span><span style="color:#DCDCAA;"> init</span><span style="color:#D4D4D4;">() {</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#9CDCFE;"> i</span><span style="color:#D4D4D4;"> := </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">; </span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;"> < </span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">; </span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">++ {</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> TR</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">TABLE</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">:</span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">+</span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">]] = </span><span style="color:#4EC9B0;">int64</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">func</span><span style="color:#DCDCAA;"> BV2AV</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">bv</span><span style="color:#4EC9B0;"> string</span><span style="color:#D4D4D4;">) </span><span style="color:#4EC9B0;">int64</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> r</span><span style="color:#D4D4D4;"> := </span><span style="color:#4EC9B0;">int64</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#9CDCFE;"> i</span><span style="color:#D4D4D4;"> := </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">; </span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;"> < </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">; </span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">++ {</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> r</span><span style="color:#D4D4D4;"> += </span><span style="color:#9CDCFE;">TR</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">bv</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">S</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">]:</span><span style="color:#9CDCFE;">S</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">]+</span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">]] * </span><span style="color:#4EC9B0;">int64</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">math</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Pow</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">float64</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">)))</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">r</span><span style="color:#D4D4D4;"> - </span><span style="color:#9CDCFE;">ADD</span><span style="color:#D4D4D4;">) ^ </span><span style="color:#9CDCFE;">XOR</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">func</span><span style="color:#DCDCAA;"> AV2BV</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">av</span><span style="color:#4EC9B0;"> int64</span><span style="color:#D4D4D4;">) </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> x</span><span style="color:#D4D4D4;"> := (</span><span style="color:#9CDCFE;">av</span><span style="color:#D4D4D4;"> ^ </span><span style="color:#9CDCFE;">XOR</span><span style="color:#D4D4D4;">) + </span><span style="color:#9CDCFE;">ADD</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> r</span><span style="color:#D4D4D4;"> := []</span><span style="color:#4EC9B0;">rune</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"BV1 4 1 7 "</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#9CDCFE;"> i</span><span style="color:#D4D4D4;"> := </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">; </span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;"> < </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">; </span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">++ {</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> r</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">S</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">]] = </span><span style="color:#4EC9B0;">rune</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">TABLE</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;">/</span><span style="color:#4EC9B0;">int64</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">math</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Pow</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">float64</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">)))%</span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">])</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#4EC9B0;"> string</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">r</span><span style="color:#D4D4D4;">)</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">func</span><span style="color:#DCDCAA;"> main</span><span style="color:#D4D4D4;">() {</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> println</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">AV2BV</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">170001</span><span style="color:#D4D4D4;">))</span></span>
|
|||
|
|
<span class="line"><span style="color:#DCDCAA;"> println</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">BV2AV</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"BV17x411w7KC"</span><span style="color:#D4D4D4;">))</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>颲枏枂銝綽�</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-"><span class="line"><span>BV17x411w7KC</span></span>
|
|||
|
|
<span class="line"><span>170001</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="rust-1" tabindex="-1"><a class="header-anchor" href="#rust-1"><span>Rust</span></a></h4><p>crate: https://github.com/stackinspector/bvid</p><div class="language-rust line-numbers-mode" data-highlighter="shiki" data-ext="rust" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-rust"><span class="line"><span style="color:#6A9955;">// Copyright (c) 2023 stackinspector. MIT license.</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">const</span><span style="color:#D4D4D4;"> XORN: </span><span style="color:#4EC9B0;">u64</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">177451812</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">const</span><span style="color:#D4D4D4;"> ADDN: </span><span style="color:#4EC9B0;">u64</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">100618342136696320</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">const</span><span style="color:#D4D4D4;"> TABLE: [</span><span style="color:#4EC9B0;">u8</span><span style="color:#D4D4D4;">; </span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">] = *</span><span style="color:#CE9178;">b"fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF"</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">const</span><span style="color:#D4D4D4;"> MAP: [</span><span style="color:#4EC9B0;">usize</span><span style="color:#D4D4D4;">; </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">] = [</span><span style="color:#B5CEA8;">9</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">8</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">7</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">5</span><span style="color:#D4D4D4;">];</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">const</span><span style="color:#D4D4D4;"> REV_TABLE: [</span><span style="color:#4EC9B0;">u8</span><span style="color:#D4D4D4;">; </span><span style="color:#B5CEA8;">74</span><span style="color:#D4D4D4;">] = [</span></span>
|
|||
|
|
<span class="line"><span style="color:#B5CEA8;"> 13</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">12</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">46</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">31</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">43</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">18</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">40</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">28</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">5</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">54</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">20</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">15</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">8</span><span style="color:#D4D4D4;">,</span></span>
|
|||
|
|
<span class="line"><span style="color:#B5CEA8;"> 39</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">57</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">45</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">36</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">38</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">51</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">42</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">49</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">52</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">53</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">7</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">9</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">50</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">44</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">34</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">,</span></span>
|
|||
|
|
<span class="line"><span style="color:#B5CEA8;"> 25</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">26</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">29</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">56</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">24</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">47</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">27</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">22</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">41</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">16</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
|||
|
|
<span class="line"><span style="color:#B5CEA8;"> 11</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">37</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">35</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">21</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">17</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">33</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">30</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">48</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">23</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">55</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">32</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">14</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">19</span><span style="color:#D4D4D4;">,</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">];</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">const</span><span style="color:#D4D4D4;"> POW58: [</span><span style="color:#4EC9B0;">u64</span><span style="color:#D4D4D4;">; </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">] = [</span></span>
|
|||
|
|
<span class="line"><span style="color:#B5CEA8;"> 1</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">3364</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">195112</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">11316496</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">656356768</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">38068692544</span><span style="color:#D4D4D4;">,</span></span>
|
|||
|
|
<span class="line"><span style="color:#B5CEA8;"> 2207984167552</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">128063081718016</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">7427658739644928</span><span style="color:#D4D4D4;">,</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">];</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">fn</span><span style="color:#DCDCAA;"> av2bv</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">avid</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">u64</span><span style="color:#D4D4D4;">) -> [</span><span style="color:#4EC9B0;">u8</span><span style="color:#D4D4D4;">; </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">] {</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> let</span><span style="color:#9CDCFE;"> a</span><span style="color:#D4D4D4;"> = (</span><span style="color:#9CDCFE;">avid</span><span style="color:#D4D4D4;"> ^ XORN) + ADDN;</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> let</span><span style="color:#569CD6;"> mut</span><span style="color:#9CDCFE;"> bvid</span><span style="color:#D4D4D4;"> = [</span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">; </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">];</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#9CDCFE;"> i</span><span style="color:#569CD6;"> in</span><span style="color:#B5CEA8;"> 0</span><span style="color:#D4D4D4;">..</span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> bvid</span><span style="color:#D4D4D4;">[MAP[</span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">]] = TABLE[(</span><span style="color:#9CDCFE;">a</span><span style="color:#D4D4D4;"> / POW58[</span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">]) </span><span style="color:#569CD6;">as</span><span style="color:#4EC9B0;"> usize</span><span style="color:#D4D4D4;"> % </span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">];</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> bvid</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;">fn</span><span style="color:#DCDCAA;"> bv2av</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">bvid</span><span style="color:#D4D4D4;">: [</span><span style="color:#4EC9B0;">u8</span><span style="color:#D4D4D4;">; </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">]) -> </span><span style="color:#4EC9B0;">u64</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#569CD6;"> let</span><span style="color:#569CD6;"> mut</span><span style="color:#9CDCFE;"> a</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">;</span></span>
|
|||
|
|
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#9CDCFE;"> i</span><span style="color:#569CD6;"> in</span><span style="color:#B5CEA8;"> 0</span><span style="color:#D4D4D4;">..</span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;"> {</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> a</span><span style="color:#D4D4D4;"> += REV_TABLE[</span><span style="color:#9CDCFE;">bvid</span><span style="color:#D4D4D4;">[MAP[</span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">]] </span><span style="color:#569CD6;">as</span><span style="color:#4EC9B0;"> usize</span><span style="color:#D4D4D4;"> - </span><span style="color:#B5CEA8;">49</span><span style="color:#D4D4D4;">] </span><span style="color:#569CD6;">as</span><span style="color:#4EC9B0;"> u64</span><span style="color:#D4D4D4;"> * POW58[</span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">];</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">a</span><span style="color:#D4D4D4;"> - ADDN) ^ XORN</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;">// assert_eq!(*b"17x411w7KC", av2bv(170001));</span></span>
|
|||
|
|
<span class="line"><span style="color:#6A9955;">// assert_eq!(170001, bv2av(*b"17x411w7KC"));</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,16))])}const E=r(i,[["render",C]]),A=JSON.parse('{"path":"/docs/misc/bvid_desc.html","title":"bvid霂湔�","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1745082190000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":4,"url":"https://github.com/SocialSisterYi"},{"name":"zine0","username":"zine0","email":"46991452+zine0@users.noreply.github.com","commits":1,"url":"https://github.com/zine0"},{"name":"stackinspector","username":"stackinspector","email":"stackinspector@126.com","commits":2,"url":"https://github.com/stackinspector"},{"name":"EvanHsieh0415","username":"EvanHsieh0415","email":"74277414+EvanHsieh0415@users.noreply.github.com","commits":1,"url":"https://github.com/EvanHsieh0415"},{"name":"Kataick","username":"Kataick","email":"24969684+Kataick@users.noreply.github.com","commits":2,"url":"https://github.com/Kataick"},{"name":"LaMerChiang","username":"LaMerChiang","email":"catlair@qq.com","commits":2,"url":"https://github.com/LaMerChiang"},{"name":"WindowsMEMZ","username":"WindowsMEMZ","email":"45706356+WindowsMEMZ@users.noreply.github.com","commits":1,"url":"https://github.com/WindowsMEMZ"},{"name":"F-park","username":"F-park","email":"52167622+F-park@users.noreply.github.com","commits":1,"url":"https://github.com/F-park"},{"name":"GalaxySnail","username":"GalaxySnail","email":"me@glxys.nl","commits":4,"url":"https://github.com/GalaxySnail"},{"name":"cctyl","username":"cctyl","email":"34262992+cctyl@users.noreply.github.com","commits":1,"url":"https://github.com/cctyl"},{"name":"YuHuanTin","username":"YuHuanTin","email":"51024916+YuHuanTin@users.noreply.github.com","commits":1,"url":"https://github.com/YuHuanTin"},{"name":"WShihan","username":"WShihan","email":"52617949+WShihan@users.noreply.github.com","commits":1,"url":"https://github.com/WShihan"},{"name":"wsh","username":"wsh","email":"3443327820@qq.com","commits":1,"url":"https://github.com/wsh"},{"name":"SessionHu","username":"SessionHu","email":"102411014+SessionHu@users.noreply.github.com","commits":2,"url":"https://github.com/SessionHu"}],"changelog":[{"hash":"ea76fb00e62ee9a486ee010e67d73a133ba9b7af","time":1745082190000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"fix(misc/bvid_desc.md): cpp highlight & remove old links"},{"hash":"18c1efbc102ae6b44c8f5314c90e5e64f0d926cd","time":1721909032000,"email":"102411014+SessionHu@users.noreply.github.com","author":"Session撠讛�","message":"feat: bili_ticket 蝞埈� Java 摰䂿緵 �� 靽⊥�銵亙� �� �躰秤靽格迤 (#1061)"},{"hash":"ce07d83125fa265810272867211bbc16f9a85ff2","time":1718806390000,"email":"52617949+WShihan@users.noreply.github.com","author":"wsh","message":"feat: bv&#
|