Files
bilibili-API-collect/docs/misc/bvid_desc.html
T

586 lines
204 KiB
HTML
Raw Normal View History

2026-01-22 17:37:01 +00:00
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="generator" content="VuePress 2.0.0-rc.24" />
<style>
:root {
--vp-c-bg: #fff;
}
[data-theme='dark'] {
--vp-c-bg: #1b1b1f;
}
html,
body {
background-color: var(--vp-c-bg);
}
</style>
<script>
const useChoice = localStorage.getItem('vuepress-color-scheme')
const systemStatus =
'matchMedia' in window
? window.matchMedia('(prefers-color-scheme: dark)').matches
: false
if (useChoice === 'light') {
document.documentElement.dataset.theme = 'light'
} else if (useChoice === 'dark' || systemStatus) {
document.documentElement.dataset.theme = 'dark'
}
</script>
<link rel="icon" href="/bilibili-API-collect/logo2.jpg"><title>bvid说明 | BAC Document</title><meta name="description" content="社区开源的第三方哔哩哔哩 API 文档">
<link rel="preload" href="/bilibili-API-collect/assets/style-D1PJH1oj.css" as="style"><link rel="stylesheet" href="/bilibili-API-collect/assets/style-D1PJH1oj.css">
<link rel="modulepreload" href="/bilibili-API-collect/assets/app-Dgsdh8A6.js"><link rel="modulepreload" href="/bilibili-API-collect/assets/bvid_desc.html-C81lzKez.js">
<link rel="prefetch" href="/bilibili-API-collect/assets/CONTRIBUTING.html-Dg5RrJ0s.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-CyFjrwOB.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-DfGFo93u.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/splash.html-DTxmsPVe.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/ver.html-BK7Hl968.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-CRFYL4xy.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-67H6b90D.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-CkX_wc45.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/activity_list.html-Bekn3Lxe.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-DMnsBsuq.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-CBuhzqhd.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/recommend_author.html-DBwItBdc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-C0ql065z.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/articles.html-zLkcz3pu.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/card.html-wL4C5GKc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/category.html-Xldy-aPs.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-CB0fSHFP.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/view.html-COrufaKB.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-BeujPZDG.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-DvFa4PRS.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/music_list.html-DeijlME4.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/musicstream_url.html-qq6CNfyp.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/rank.html-DT2C28KO.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/status_number.html-DEiPXucy.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/follow.html-DOVJW4CZ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-BLypTc8g.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/season_index.html-BSNCSXU1.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/timeline.html-CzpzQzIG.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/videostream_url.html-DlvjAVi_.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/banlist.html-Bx6m-UTQ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-BMdR7u31.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/video_room.html-CJ-aNxn7.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-BHbw7wWp.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/videostream_url.html-DnLcd0On.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/ip.html-BZmNmhHk.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-D_ydhzqh.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-D36gw51A.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-BN64GETH.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/opus.html-CoQ5EdO3.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/railgun.html-2O05GCD4.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/season.html-B_fCwBA8.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/statistics_data.html-BWH8OqIZ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/upload.html-DvDEkxhj.js" as="script"><link rel="prefetch" href="/bilibili-API-
</head>
<body>
<div id="app"><!--[--><div class="vp-theme-container external-link-icon" vp-container><!--[--><header class="vp-navbar" vp-navbar><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/bilibili-API-collect/"><img class="vp-site-logo" src="/bilibili-API-collect/logo2.jpg" alt="BAC Document"><span class="vp-site-name vp-hide-mobile" aria-hidden="true">BAC Document</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/" aria-label="首页"><!--[--><!--[--><!--]--><!--]-->首页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/#🍴目录" aria-label="目录"><!--[--><!--[--><!--]--><!--]-->目录<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/CONTRIBUTING.html" aria-label="贡献指南"><!--[--><!--[--><!--]--><!--]-->贡献指南<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="相关社群"><span class="title">相关社群</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="相关社群"><span class="title">相关社群</span><span class="right arrow"></span></button><ul class="vp-navbar-dropdown" style="display:none;"><!--[--><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&amp;k=ympvb3LAPT-Ulu3ezhGqbkJ8zXMKImOX&amp;authKey=z1KdkOdKO3wytN43m9K6On9nBtnDL4pAoD6VQHCipFBb9TasNDKuDHCmOE6TF3uc&amp;noverify=0&amp;group_code=191187164" aria-label="QQ交流群(综合技术交流)" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->QQ交流群(综合技术交流)<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://t.me/bilibili_API_collect_community" aria-label="Telegram交流群(Github Bot推送)" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Telegram交流群(Github Bot推送)<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://github.com/SocialSisterYi/bilibili-API-collect" aria-label="GitHub" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->GitHub<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button type="button" class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.0
<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;"> &lt;&lt; </span><span style="color:#B5CEA8;">51</span></span>
<span class="line"><span style="color:#D4D4D4;">ALPHABET = </span><span style="color:#CE9178;">&quot;FcwAPNKTMug3GV5Lj7EJnHpWsx4tb8haYeviqBz6rkCy12mUSDQX9RdoZf&quot;</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;">&quot;BV1&quot;</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;">) -&gt; </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;">&quot;&quot;</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;">&quot;&quot;</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;">) -&gt; </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 &amp; 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;">&quot;BV1L9Uoa9EUx&quot;</span></span>
<span class="line"><span style="color:#C586C0;">assert</span><span style="color:#D4D4D4;"> bv2av(</span><span style="color:#CE9178;">&quot;BV1L9Uoa9EUx&quot;</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;"> &lt;&lt; </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;">&quot;BV1&quot;</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;">) -&gt; </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;">) -&gt; </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;">&quot;BV&quot;</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;">&quot;BV&quot;</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 &amp; 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;">&quot;BV1L9Uoa9EUx&quot;</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;">&quot;FcwAPNKTMug3GV5Lj7EJnHpWsx4tb8haYeviqBz6rkCy12mUSDQX9RdoZf&quot;</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;">&#39;B&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39;V&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39;1&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39;0&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39;0&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39;0&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39;0&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39;0&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39;0&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39;0&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39;0&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39;0&#39;</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;">) &gt; </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;">&quot;BV1bY4y1j7RA&quot;</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;">&quot;BV1aP411K7it&quot;</span><span style="color:#D4D4D4;">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A9955;"> //av ==&gt; 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 ==&gt;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;"> &quot;fmt&quot;</span></span>
<span class="line"><span style="color:#CE9178;"> &quot;strings&quot;</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;">&quot;FcwAPNKTMug3GV5Lj7EJnHpWsx4tb8haYeviqBz6rkCy12mUSDQX9RdoZf&quot;</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;"> &amp; </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;">&quot;B&quot;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&quot;V&quot;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&quot;1&quot;</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;"> &gt; </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;">&quot;&quot;</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;">&quot;BV1mH4y1u7UA&quot;</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;">&quot;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;">&quot;</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;">&quot;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;">&quot;</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;"> &lt;algorithm&gt;</span></span>
<span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> &lt;cassert&gt;</span></span>
<span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> &lt;print&gt;</span></span>
<span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> &lt;string&gt;</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;">&quot;FcwAPNKTMug3GV5Lj7EJnHpWsx4tb8haYeviqBz6rkCy12mUSDQX9RdoZf&quot;</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 &gt; </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;"> &amp;&amp; </span><span style="color:#CE9178;">&quot;Avid must be greater than 0&quot;</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;">&quot;BV1&quot;</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;">&#39;</span><span style="color:#D7BA7D;">\0</span><span style="color:#CE9178;">&#39;</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 &gt; </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;"> &amp;&amp; i &gt; </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;"> &amp;</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;">&quot;BV1&quot;</span><span style="color:#D4D4D4;">) &amp;&amp; </span><span style="color:#CE9178;">&quot;Bvid must start with &#39;BV1&#39;&quot;</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 &lt; </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 &amp; 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;">&quot;BV16x4y1H7M1&quot;</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;">&quot;BV16x4y1H7M1&quot;</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">【揭秘】av号转bv号的过程</a></p><h3 id="av-bv算法-1" tabindex="-1"><a class="header-anchor" href="#av-bv算法-1"><span>av-&gt;bv算法</span></a></h3><p>注:本算法及示例程序仅能编解码<code>avid &lt; 29460791296</code>,且暂无法验证<code>avid &gt;= 29460791296</code>的正确性 再注:本人不清楚新算法能否编解码<code>avid &gt;= 29460791296</code></p><ol><li>a = (avid ⊕ 177451812) + 100618342136696320</li><li>以 i 为循环变量循环 6 次 b[i] = (a / 58 ^ i) % 58</li><li>将 b[i] 中各个数字转换为以下码表中的字符</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 -&gt; 9</p><p>1 -&gt; 8</p><p>2 -&gt; 1</p><p>3 -&gt; 6</p><p>4 -&gt; 2</p><p>5 -&gt; 4</p><p>6 -&gt; 0</p><p>7 -&gt; 7</p><p>8 -&gt; 3</p><p>9 -&gt; 5</p></blockquote><h3 id="bv-av算法-1" tabindex="-1"><a class="header-anchor" href="#bv-av算法-1"><span>bv-&gt;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;">&quot;fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF&quot;</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;">) -&gt; </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;">&quot;&quot;</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;"> &quot;&quot;</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;">) -&gt; </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;">&quot;&quot;</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;">&quot;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;">你的选择:&quot;</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;">&quot;1&quot;</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;">&quot;BV号是:BV </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;">&#39;AV号是:&#39;</span><span style="color:#D4D4D4;">)))</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">&quot;</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;">&quot;2&quot;</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;">&quot;AV号是:AV </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;">&#39;BV号是:&#39;</span><span style="color:#D4D4D4;">))</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">&quot;</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;">&quot;3&quot;</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;">&quot;输入错误请重新输入&quot;</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;">&quot;__main__&quot;</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;"> &lt;stdio.h&gt;</span></span>
<span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> &lt;stdlib.h&gt;</span></span>
<span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> &lt;math.h&gt;</span></span>
<span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> &lt;string.h&gt;</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;">&quot;fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF&quot;</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 &lt; </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 &lt; </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;">&quot;BV1 4 1 7 &quot;</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 &lt; </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;">&quot;</span><span style="color:#9CDCFE;">%s</span><span style="color:#D7BA7D;">\n</span><span style="color:#CE9178;">&quot;</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;">&quot;</span><span style="color:#9CDCFE;">%u</span><span style="color:#D7BA7D;">\n</span><span style="color:#CE9178;">&quot;</span><span style="color:#D4D4D4;">, </span><span style="color:#DCDCAA;">bv2av</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">&quot;BV17x411w7KC&quot;</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;">&#39;fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF&#39;</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;">&lt;</span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">number</span><span style="color:#D4D4D4;">&gt; = {}; </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;"> &lt; </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;">&#39;B&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39;V&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39;1&#39;</span><span style="color:#D4D4D4;">, , , </span><span style="color:#CE9178;">&#39;4&#39;</span><span style="color:#D4D4D4;">, , </span><span style="color:#CE9178;">&#39;1&#39;</span><span style="color:#D4D4D4;">, , </span><span style="color:#CE9178;">&#39;7&#39;</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;"> &lt; </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;">&#39;&#39;</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;"> &lt; </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;">&#39;BV17x411w7KC&#39;</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;"> * 算法来自:https://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;">&quot;fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF&quot;</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;">&lt;</span><span style="color:#4EC9B0;">Character</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Integer</span><span style="color:#D4D4D4;">&gt; </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;">&lt;&gt;();</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 &lt; </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;">&#39;B&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39;V&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39;1&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39; &#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39; &#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39;4&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39; &#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39;1&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39; &#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39;7&#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39; &#39;</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">&#39; &#39;</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 &lt; </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 &lt; </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程序,修改了部分代码,且转换为Kotlin</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;">&quot;fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF&quot;</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;">&lt;</span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Int</span><span style="color:#D4D4D4;">&gt;()</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;">&lt;</span><span style="color:#4EC9B0;">Int</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">&gt;()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A9955;"> //现在,定义av号和bv号互转的方法</span></span>
<span class="line"><span style="color:#6A9955;">//定义一个power乘方方法,这是转换进制必要的</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转av方法</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转bv方法</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;">&quot;av&quot;</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;">&quot;BV1 4 1 7 &quot;</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;"> &quot;&quot;</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;"> &quot;math&quot;</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;">&quot;fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF&quot;</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;"> &lt; </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;"> &lt; </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;">&quot;BV1 4 1 7 &quot;</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;"> &lt; </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;">&quot;BV17x411w7KC&quot;</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&quot;fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF&quot;</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;">) -&gt; [</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;">]) -&gt; </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&quot;17x411w7KC&quot;, av2bv(170001));</span></span>
<span class="line"><span style="color:#6A9955;">// assert_eq!(170001, bv2av(*b&quot;17x411w7KC&quot;));</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></div><!--[--><!--]--></div><footer class="vp-page-meta"><div class="vp-meta-item edit-link"><a class="auto-link external-link label" href="https://github.com/SocialSisterYi/bilibili-API-collect/edit/master/docs/misc/bvid_desc.md" aria-label="在 GitHub 上编辑此页" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><svg class="edit-icon" viewbox="0 0 1024 1024"><g fill="currentColor"><path d="M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"></path><path d="M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"></path></g></svg><!--]--><!--]-->在 GitHub 上编辑此页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-meta-item git-info"><div class="vp-meta-item last-updated"><span class="meta-item-label">最近更新: </span><time class="meta-item-info" datetime="2025-04-19T17:03:10.000Z" data-allow-mismatch>2025/4/19 17:03</time></div><div class="vp-meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: 1440239038@qq.com">SocialSisterYi</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: 46991452+zine0@users.noreply.github.com">zine0</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: stackinspector@126.com">stackinspector</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: 74277414+EvanHsieh0415@users.noreply.github.com">EvanHsieh0415</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: 24969684+Kataick@users.noreply.github.com">Kataick</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: catlair@qq.com">LaMerChiang</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: 45706356+WindowsMEMZ@users.noreply.github.com">WindowsMEMZ</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: 52167622+F-park@users.noreply.github.com">F-park</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: me@glxys.nl">GalaxySnail</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: 34262992+cctyl@users.noreply.github.com">cctyl</span><!--[-->, <!--]--><!--]--><!--[
<script type="module" src="/bilibili-API-collect/assets/app-Dgsdh8A6.js" defer></script>
</body>
</html>