新浪微博每一条微博都会有一个mid,然后每条微博都有一个独立的地址,例如:http://www.weibo.com//Bw3SXzWzP

规律:地址中的黄色部分是用户id,绿色部分是微博的识别字符串,经过分析应该是62进制的表示。每调微博有一个编号称为mid,是十进制的。所以mid和地址中的绿色部分可以相互转换,转换的js代码如下:

一下代码来自互联网,版权归原作者所有。我只是借用一下

/**
* 新浪微博mid与url互转实用工具
* 作者: XiNGRZ (http://weibo.com/xingrz)
*/
var WeiboUtility = {};
/**
* 62进制字典
*/
WeiboUtility.str62keys = [
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
"u", "v", "w", "x", "y", "z",
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
"U", "V", "W", "X", "Y", "Z"
];
/**
* 62进制值转换为10进制
* @param {String} str62 62进制值
* @return {String} 10进制值
*/
WeiboUtility.str62to10 = function(str62) {
var i10 = 0;
for (var i = 0; i < str62.length; i++)
{
var n = str62.length - i - 1;
var s = str62[i];
i10 += this.str62keys.indexOf(s) * Math.pow(62, n);
}
return i10;
};
/**
* 10进制值转换为62进制
* @param {String} int10 10进制值
* @return {String} 62进制值
*/
WeiboUtility.int10to62 = function(int10) {
var s62 = '';
var r = 0;
while (int10 != 0)
{
r = int10 % 62;
s62 = this.str62keys[r] + s62;
int10 = Math.floor(int10 / 62);
}
return s62;
};
/**
* URL字符转换为mid
* @param {String} url 微博URL字符,如 "wr4mOFqpbO"
* @return {String} 微博mid,如 "201110410216293360"
*/
WeiboUtility.url2mid = function(url) {
var mid = '';
for (var i = url.length - 4; i > -4; i = i - 4) //从最后往前以4字节为一组读取URL字符
{
var offset1 = i < 0 ? 0 : i;
var offset2 = i + 4;
var str = url.substring(offset1, offset2);
str = this.str62to10(str);
if (offset1 > 0) //若不是第一组,则不足7位补0
{
while (str.length < 7)
{
str = '0' + str;
}
}
mid = str + mid;
}
return mid;
};
/**
* mid转换为URL字符
* @param {String} mid 微博mid,如 "201110410216293360"
* @return {String} 微博URL字符,如 "wr4mOFqpbO"
*/
WeiboUtility.mid2url = function(mid) {
if (typeof(mid) != 'string') return false; //mid数值较大,必须为字符串!
var url = '';
for (var i = mid.length - 7; i > -7; i = i - 7) //从最后往前以7字节为一组读取mid
{
var offset1 = i < 0 ? 0 : i;
var offset2 = i + 7;
var num = mid.substring(offset1, offset2);
num = this.int10to62(num);
url = num + url;
}
return url;
};
document.write(WeiboUtility.mid2url("3775437480334921"));

javascript实现新浪微博MID与地址转换的更多相关文章

  1. JavaScript 图片与Base64数据互相转换脚本

    JavaScript 图片与Base64数据互相转换脚本 注: 转换过程中注意跨域问题.测试页是否支持相关标签创建.dom结构. 方法一:非Html 5使用FileReader 使用XMLHttpRe ...

  2. ip地址转换

    通常,我们用点分十进制字符串表示ipv4地址(192.168.1.1),用十六进制字符串表示ipv6地址(fe80::20c:29ff:fee9:4bcc). ipv4转换函数 #include &l ...

  3. [转]字符型IP地址转换成数字IP的SQL函数

    使用SQL函数可以实现许多的功能,下面为您介绍的是字符型IP地址转换成数字IP的SQL函数示例,供您参考,希望对您学习SQL函数能够有所帮助.      /**//*--调用示例       sele ...

  4. 检测cpu是否支持虚拟化和二级地址转换【转】

    SLAT:二级地址转换   用微软的小工具“Coreinfo.exe” 下载地址是: http://technet.microsoft.com/en-us/sysinternals/cc835722 ...

  5. 清除路由器NAT地址转换

    首先当你的NAT网络地址转换成功搭建起来,并且测试过网络通信时,此时NAT地址转换表上面是存在转换信息的,你可以通过在特权模式下输入命令"show ip nat translation&qu ...

  6. RARP反向地址转换协议

    反向地址转换协议(RARP:Reverse Address Resolution Protocol) 反向地址转换协议(RARP)允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP ...

  7. 手把手系列:实现Nat地址转换

    1.实验目的: 掌握内网中的主机C1连接到Internet时,通过NAT实现私有全局地址转换.   2.实验拓扑: 3.实验步骤: 步骤一:给主机C1和C2配置IP地址.子网掩码和网关.如图: C1: ...

  8. Linux 网络编程详解一(IP套接字结构体、网络字节序,地址转换函数)

    IPv4套接字地址结构 struct sockaddr_in { uint8_t sinlen;(4个字节) sa_family_t sin_family;(4个字节) in_port_t sin_p ...

  9. 地址转换协议ARP

    地址转换协议ARP 在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址.而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址.这就导致在以太 ...

随机推荐

  1. Unity3d 背景、音效 播放 简单demo

    仅实现功能,AudioListener在MainCamera中 using UnityEngine; using System.Collections; using System.Collection ...

  2. GCC参数使用

    gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言, ...

  3. 21天学通C++_Day3_Part2

    0.语句的分行 法1:在第一行末尾添加反斜杠 cout<<"Hello \ World!"<<endl; 法2:将字符串字面量分成两个,编译器注意到两个响铃 ...

  4. 帮你彻底解决eclipse(myeclipse)中写struts.xml配置文件

    其实,在自己写struts.xml的时候,竟然没有代码提示功能.让我非常的烦恼,其实解决这个问题的关键还是system不知道他的dtd的规则无法提示配置信息 很简单,那就让它知道就OK了!!! 道理明 ...

  5. C# 数组、ArrayList和List三者的区别

    在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ...

  6. Windows 7 扩展玻璃效果(Aero Glass)

    转自:http://www.cnblogs.com/gnielee/archive/2010/10/04/windows7-extend-aero-glass.html Windows 7 操作系统默 ...

  7. jmeter ---单个server最大连接数的设置

    为了模拟浏览器关于建立多少并行的链接设置,在jmeter中也有相关的设置 在HTTP请求设置页面,勾选“Use concurrent pool" 选型,并将pool size设置为所需的并发 ...

  8. [转载]交换机STP协议

    注:之前做一个项目,测试部使用2个公司的交换机,H3C和H公司的,H公司的交换机是OEM H3C的交换机,正常来说两者使用没有区别. 但是使用中发现,如果设备的多个对外业务网口连接的交换机的聚合网口, ...

  9. H5浏览器播放RTMP直播流

    <!DOCTYPE html><html><head><meta charset="UTF-8"><title>Inse ...

  10. 【转】Jmeter:图形界面压力测试工具

    Jmeter是一款强大的图形界面压力测试工具,完全用Java写成,关于Jmeter的介绍,网上其实有不少的文章,我原本是不想再重复写类似文章的,但我发现有些很关键性的,在我们测试中一定会用到的一些设置 ...