哔哩哔哩 BV、AV互转 C#版
哔哩哔哩 BV、AV互转 C#版
从JAVA移植的(从python移植的B站AV号BV号互转算法源码)//套娃
引用@ty1937
https://blog.csdn.net/ty1937/article/details/105080093?
private static string table = "fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF";private static Dictionary<string, Int64> b2aDic = new Dictionary<string, Int64>();private static Dictionary<Int64, string> a2bDic = new Dictionary<Int64, string>();static int[] ss = { 11, 10, 3, 8, 4, 6, 2, 9, 5, 7 };static Int64 xor = 177451812;static Int64 add = 8728348608L;/// <summary>/// 泡我(依赖性)/// </summary>/// <param name="a">英文字母的第一个字母</param>/// <param name="b">英文字母的第二个字幕</param>/// <returns>想要的结果(废话)</returns>public static long Power(int a, int b){Int64 power = 1;for (int i = 0; i < b; i++){power *= a;}return power;}/// <summary>/// BV号转av号/// </summary>/// <param name="str">带有BV前缀的编号</param>/// <returns>带有小写av前缀的编号</returns>public static string BV2AV(string str){try{str = str.Trim();b2aDic.Clear();Int64 r = 0;for (int i = 0; i < 58; i++){string s1 = table.Substring(i, 1);b2aDic.Add(s1, i);}for (int i = 0; i < 6; i++){r = r + b2aDic[str.Substring(ss[i], 1)] * Power(58, i);}return "av" + ((r - add) ^ xor);}catch (Exception ex){//MessageBox.Show(ex.ToString());return "Error";throw;}}/// <summary>/// av号转BV号/// </summary>/// <param name="str">带有小写av前缀的编号</param>/// <returns>带有大写BV前缀的编号</returns>public static string AV2BV(string str){try{str = str.Trim();a2bDic.Clear();string[] strs = { "av" };string[] sss = (str.Split(strs, StringSplitOptions.RemoveEmptyEntries));Int64 s = Convert.ToInt64(sss[0]);StringBuilder sb = new StringBuilder("BV1 4 1 7 ");s = (s ^ xor) + add;for (int i = 0; i < 58; i++){string s1 = table.Substring(i, 1);a2bDic.Add(i, s1);}for (int i = 0; i < 6; i++){string r = a2bDic[(s / Power(58, i) % 58)];int index = Convert.ToInt32(ss[i].ToString());for (int j = 0; j < sb.Length; j++){sb[index] = r.ToCharArray()[0];}}return sb.ToString();}catch (Exception ex){//MessageBox.Show(ex.ToString());return "Error";throw;}}
花了点时间从python移植过来的JAVA移植过来的(套娃)。
java的substring和replace和C#的重载略不同
两个方法依赖Power方法,此为静态工具类
哔哩哔哩 BV、AV互转 C#版相关推荐
- 哔哩哔哩 BV、AV互转 Java版
从python移植的B站AV号BV号互转算法源码 private static String table = "fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJ ...
- 哔哩哔哩弹幕爬取以及BV与AV号之间的转换
作为b站老粉丝,我有义务向新人科普bilibili的发展与纪年史,本人持中立态度,仅做记录工作. B站的API端口都是开放的,用一个很简单的调用命令就可以计算出BV号对应的AV号. B站的源码已经在G ...
- B站bv和av互转java代码
B站bv和av互转java代码 废话不多说直接展示代码 废话不多说直接展示代码 // An highlighted block import java.util.ArrayList; import j ...
- Python+BeautifulSoup+Selenium模拟浏览器循环自动播放视频,如哔哩哔哩某个UP主的视频
1.前言 计算机的出现,推动了人类社会的进步,使得人们更高效的工作或是生活.当我们很"懒"的时候,计算机就能站出来,帮助我们做一些我们觉得浪费时间的事情了.你嫌用手点鼠标麻烦,计算 ...
- IDEA JAVA使用BilibiliClient抓取哔哩哔哩用户动态等数据信息
关于 一直在想办法获取哔哩哔哩的相关对象,对媒体运营数据进行自动管理,于是写了一个BiliClient的JAR包,自己使用,也分享出来,希望可以帮助大家,目前该项目已经上传GITHUB和Maven中央 ...
- 互联网日报 | 6月28日 星期一 | B站成立哔哩哔哩快乐奖学金;百度成立独立芯片公司昆仑芯;FF将于7月21日纳斯达克上市...
今日看点 ✦ 阿里CCO推出"百分百计划",全面升级淘宝天猫服务体验 ✦ 百度芯片业务成立独立芯片公司,第二代芯片下半年量产 ✦ FF与PSAC合并上市文件生效,将于7月21日纳斯 ...
- 哔哩哔哩2020年Q4及全年财报:全年营收120亿元,同比增长77%
Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 来源丨TechWeb(ID:TechWeb) 北京时 ...
- 菜鸟弟弟从零开始的爬取Bilibili弹幕的Python爬虫教程-哔哩哔哩 - ( ゜- ゜)つロ 干杯~
从零开始的爬取Bilibili弹幕的Python爬虫教程 或许可以作为一个爬虫小白的练手的demo? 还是先看看什么是爬虫吧!(还有Bilibili! ) 网络爬虫: 网络爬虫(又称为网页蜘蛛,网络机 ...
- 哔哩哔哩弹幕api及一些解释
有两个弹幕api接口,分别是移动端与电脑端 https://comment.bilibili.com/ + cid + .xml https://api.bilibili.com/x/v1/dm/li ...
最新文章
- centos7 安装 python3
- 第一篇 献给一次线上100%CPU
- Acwing第 12 场周赛【未完结】
- 【Java】6.2 处理对象
- gridview 导出到excel,repeater类似
- 四种π型RC滤波电路
- eclipse主题下载网站
- 关于nginx调转404错误页面
- 前端学习(892):bom概述
- NeurIPS 2019丨深度双线性转换改进细粒度图像分类
- java 特殊字符过滤器_java处理url中的特殊字符
- UPPERERR.txt
- 每当再右侧的选择框中选中一个人的名字时,便在左侧的文本区中显示出此人的情况介绍,按close按钮时结束程序的运行
- pycharm去除波浪线的方法
- 游戏开发之运算符重载(C++基础)
- 操作系统之文件管理系统
- 盒子模型(Box Model)
- 解决laytpl.js模板引擎插件加载模板后无法获取模板中的元素id等内容
- 《Python全栈系列教程》目录
- 基于平滑、差分的矩形波零漂(基线漂移)消除算法(MATLAB实现,代码和数据见CSDN同名资源)