微博mid和id转换
mid为62进制编码,id为常见的10进制编码。
id从低位到高位,7个数字为一组,转换为62进制,并顺序合并,即转换为mid。
mid从地位到高位,4个字母为一组,转换为10进制,并右移7位,计算和,得到id。
7位的10进制数最大为9999999,转换为62进制后为FXsj;8位的10进制数最大为99999999,转换为62进制后为9FXsj。
7位分隔10进制数,能保证最多获得4位62进制数。
参考了http://blog.csdn.net/dier4836/article/details/7827908,但是他的mid计算id有问题。
package com.founder.weibocrawler.util; public class WeiboIDUtils { public static void main(String[] args) {
System.out.println(Mid2Id("D5DVt7A9n"));
System.out.println(Id2Mid("3913451191807261"));
} public static String Mid2Id(String mid) {
long id = 0L;
// 从最后往前以4字节为一组读取字符
int count = 0;
for (int i = mid.length() - 4; i > -4; i = i - 4) {
int offset = i < 0 ? 0 : i;
int len = i < 0 ? mid.length() % 4 : 4;
String str = Encode62ToLong(mid.substring(offset, offset + len)).toString();
// 不足7位补0
if (offset != 0)
str = String.format("%07d", Long.valueOf(str));
id = (long) (Long.valueOf(str) * Math.pow(10, 7 * count) + id);
count++;
}
return id + "";
} public static String Id2Mid(String id) {
String mid = "";
for (int i = id.length() - 7; i > -7; i = i - 7) {
int offset = i < 0 ? 0 : i;
int len = i < 0 ? id.length() % 7 : 7;
String str = LongToEnode62(Long.valueOf(id.substring(offset, offset + len)));
mid = str + mid;
}
return mid;
} private static String str62keys = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; public static Long Encode62ToLong(String str62) {
long long10 = 0;
for (int i = 0; i < str62.length(); i++) {
double n = str62.length() - i - 1;
long10 += Long.valueOf(str62keys.indexOf(str62.substring(i, i + 1)) * (long) Math.pow(62, n) + "");
}
return long10;
} public static String LongToEnode62(long long10) {
String str62 = "";
int offset = 0;
while (long10 != 0) {
offset = Integer.valueOf(long10 % 62 + "");
str62 = str62keys.substring(offset, offset + 1) + str62;
long10 = (long) Math.floor(long10 / 62.0);
}
return str62;
}
}
微博mid和id转换的更多相关文章
- 微博地址url(id)与mid的相互转换
关键字:新浪 微博 url id mid 互相转换地址:http://www.cnblogs.com/txw1958/archive/2012/12/07/weibo-id-to-mid.html 通 ...
- 微博地址url(id)与mid的相互转换 Java版
原理: 新浪微博的URL都是如:http://weibo.com/2480531040/z8ElgBLeQ这样三部分. 第一部分(绿色部分)为新浪微博的域名,第二部分(红色部分)为博主Uid,第三部分 ...
- javascript实现新浪微博MID与地址转换
新浪微博每一条微博都会有一个mid,然后每条微博都有一个独立的地址,例如:http://www.weibo.com//Bw3SXzWzP 规律:地址中的黄色部分是用户id,绿色部分是微博的识别字符串, ...
- 基因id转换
DAVID网站提供了id转换的功能 1 选择上传gene list文件 2 选择上传ID的类型,我们ID-list.txt中的是Ensembl Gene ID,所以这里选ENSEMBL_GENE_ID ...
- 常用Gene ID转换工具--转载
在自己的研究工作中,经常会遇到一些需要对Gene ID进行转换的情况.目前存在着大量的生物信息数据库,每个数据库都有自己定义的ID命名规则,转换起来实在是一个很大的工作.举个例子,之前构建的Human ...
- 字符串ID转换成字符串名字
select U.CnName+',' from f_splitstr('1828,1055333,1,1035681,752,494,22549,219,23860,478,23453,677, ...
- ABAP 将SAP用户ID转换成用户名
FORM frm_coverted_name USING usrid TYPE sy-uname CHANGING name TYPE adrp-name ...
- 微博转发关系采集,可拓展关键字采集,评论采集(Java版)
微博模拟登录获取cookis,配置采集深度,采集一条微博转发关系页面,同时解析页面,生成一条微博的传播图,数据集可做微博影响力分析和传播分析 gitthub:https://github.com/ch ...
- [iOS微博项目 - 3.0] - 手动刷新微博
github: https://github.com/hellovoidworld/HVWWeibo A.下拉刷新微博 1.需求 在“首页”界面,下拉到一定距离的时候刷新微博数据 刷新数据的时候使 ...
随机推荐
- [转]spring beans.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- C#导出涉及行列合并的复杂的Excel数据
一.导出数据格式 二.实现代码 /// <summary> /// 导出经费统计excel表格 /// </summary> /// <param name=" ...
- CentOS7 词典
goldendict sudo yum install goldendict打开goldendict,阅读welcome,添加本地词典,在http://abloz.com/huzheng/stardi ...
- iOS 图片选择器 总结
UIImagePickerController #pragma mark 从用户相册获取活动图片 - (void)pickImageFromAlbum{ imagePicker = [[UIImage ...
- Schwarz积分公式
设$f\in H(B(0,R))\cap C(\overline{B(0,R)})$,且$f=u+iv$,则$f$可用其实部表示为 $$f(z)=\frac{1}{2\pi}\int_{0}^{2\p ...
- JS && JSON
将Json字符串转为Json对象以下3种方式: eval('(' + str + ')'); JSON.parse(str); jQuery.parseJSON(str): 将Json对象转为字符串: ...
- AT常见问题
https://m.douban.com/note/247040789/?from=author
- Memcached vs Redis
Memcached和Redis哪一个能有更好的表现? Redis可以看作是Memcached的超集,这让Redis不仅仅可以用来当缓存,也可以作为实际的数据存储. 强大的数据结构以及操作命令. 默认持 ...
- Guava学习笔记(1):Optional优雅的使用null
转自:http://www.cnblogs.com/peida/archive/2013/06/14/Guava_Optional.html 参考:[Google Guava] 1.1-使用和避免nu ...
- 【Mybatis框架】查询缓存(二级缓存)
继上一篇博客,我们讲述了mybatis的一级缓存,接下来,我们来学习一下mybatis的二级缓存 博客链接地址: http://blog.csdn.NET/liweizhong193516/artic ...