Skip to content

Instantly share code, notes, and snippets.

@onlyyoujack
Created March 25, 2014 07:56
Show Gist options
  • Select an option

  • Save onlyyoujack/9756996 to your computer and use it in GitHub Desktop.

Select an option

Save onlyyoujack/9756996 to your computer and use it in GitHub Desktop.
#pragma mark - 新浪微博mid与url互转
-(NSArray*)str62keys
{
return @[@"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 {NSString} str62 62进制值
* @return {NSString} 10进制值
*/
-(NSInteger)str62to10:(NSString*)str62
{
NSInteger i10 = 0;
for (int i = 0; i < [str62 length]; i++)
{
NSInteger n = str62.length - i - 1;
NSRange range=NSMakeRange(n, 1);
NSString* s = [str62 substringWithRange:range];
i10 += [[self str62keys]indexOfObject:s] * pow(62, i);
}
return i10;
}
/**
* 10进制值转换为62进制
* @param {NSString} int10 10进制值
* @return {NSString} 62进制值
*/
-(NSString*)int10to62:(NSInteger)int10
{
NSMutableString* s62 = [NSMutableString stringWithCapacity:200];
NSInteger r=0;
while (int10!=0 && [s62 length]<100) {
r=int10%62;
NSString* temp=[self str62keys][r];
[s62 insertString:temp atIndex:0];
int10 = floor(int10 / 62);
}
return s62;
}
/**
* URL字符转换为mid
* @param {NSString} url 微博URL字符,如 "wr4mOFqpbO"
* @return {NSString} 微博mid,如 "201110410216293360"
*/
-(NSString*)url2mid:(NSString*)url
{
NSMutableString* mid= [NSMutableString stringWithCapacity:200];
for (int i=[url length]-4; i> -4; i=i-4) { //从最后往前以4字节为一组读取URL字符
int offset1 = i < 0 ? 0 : i ;
int length = i< 0? i+4 : 4;
NSMutableString* str= [NSMutableString stringWithCapacity:200];
[str setString:[url substringWithRange:NSMakeRange(offset1, length)]];
[str setString:[NSString stringWithFormat:@"%d",[self str62to10:str]]];
if (offset1 > 0) {//若不是第一组,则不足7位补0
while ([str length]<7) {
[str insertString:@"0" atIndex:0];
}
}
[mid insertString:str atIndex:0];
}
return mid;
}
/**
* mid转换为URL字符
* @param {NSString} mid 微博mid,如 "201110410216293360"
* @return {NSString} 微博URL字符,如 "wr4mOFqpbO"
*/
-(NSString*) mid2url:(NSString*)mid
{
if (![mid length]) {
return mid;
}
NSMutableString* url= [NSMutableString stringWithCapacity:200];
for (int i= [mid length]-7;i>-7; i=i-7) {//从最后往前以7字节为一组读取mid
int offset1 = i<0?0:i;
int length=i<0?i+7:7;
NSString* num = [mid substringWithRange:NSMakeRange(offset1, length)];
NSString* temp=[self int10to62:[num intValue]];
[url insertString:temp atIndex:0];
}
return url;
}
-(NSString*)getWeiboURLWithMid:(NSString*)mid user:(NSString*)uid
{
//http://weibo.com/1962310741/ACzePqDqV
NSString* midUrl=[self mid2url:mid];
NSString* url=@"http://weibo.com";
if ([midUrl length]&& [uid length]) {
url = [NSString stringWithFormat:@"http://weibo.com/%@/%@",uid,midUrl];
}
return url;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment