微博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.需求 在“首页”界面,下拉到一定距离的时候刷新微博数据 刷新数据的时候使 ...
随机推荐
- centos 安装 rabbitMQ
此类文章一大堆,本文主要站在开发角度保证基本rabbitmq的基本访问. 系统:centos6 64bit 官方指引:https://www.rabbitmq.com/install-rpm.html ...
- TraceView进行性能分析
一.TraceView概述 TraceView 是 Android 平台配备一个很好的性能分析的工具.它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到 method. 详细内容参考 ...
- JavaSE18章_JSON解析详解
一.JSON简介 JSON(JavaScript Object Notation),是一种轻量级的数据交换格式.JSON是存储和交换文本信息的,语法类似 XML.易于人阅读和编写,同时也易于机器解析和 ...
- 如何有效地描述软件缺陷(Defect)?
最近一个月偷懒了,刚看到一篇博文很不错.最近也是碰到一样的问题,由于我记录bug的描述不够清晰.导致开发看不懂我描述的bug,还有一些配置信息没记录好.出现一问三不知的情况,还被领导训.下面的博文是来 ...
- jquery检测浏览器类型
使用jquery如下代码检测浏览器版本时:出问题,在检测IE浏览器,如果版本是IE11时,会出现 $.browser.msie的返回值是false,$.browser.mozilla的返回值是true ...
- hdu 2594 Simpsons’ Hidden Talents
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2594 思路:将两个串连起来求一遍Next数组就行长度为两者之和,遍历时注意长度应该小于两个串中的最小值 ...
- Oracle查询实用命令
1.设置每行的长度: SET LIN[ESIZE] 200; 2.设置分页数量: SET PAGES[IZE] 50; 3.查看表空间相关信息: select file_id, tablespace_ ...
- 【leetcode】Simplify Path
题目简述: Given an absolute path for a file (Unix-style), simplify it. For example, path = "/home/& ...
- SQL SERVER中的扩展属性
以前在SQL SERVER建表时,总看到扩展属性,但一直未使用过.今天研究下: 增加扩展属性: 语法: sp_addextendedproperty [ @name = ] { 'property_n ...
- 疯狂房价"逼死"年轻人,别指望中国未来能出人才了
社会高房价,杀死那个学者 --北京青年学者生存侧记 这一轮,房价又上涨了,只有更疯狂. 几年前,北京三环内的房价突破5万,世人惊呼:没几年,四环5万了,五环5万了:这一轮,北京城乡结合部,哪怕脏乱差之 ...