 |
C# Google PageRank .net库 (checksum) |
|
| C# Google PageRank .net库 (checksum) |
|
| 作者:未知 文章来源:mx68.com收集 点击数: 更新时间:2006-1-19 15:40:31
|
nbsp; b+=(uint)(url[k+6]<<16); 144 b+=(uint)(url[k+5]<<8); 145 b+=(uint)(url[k+4]); 146 a+=(uint)(url[k+3]<<24); 147 a+=(uint)(url[k+2]<<16); 148 a+=(uint)(url[k+1]<<8); 149 a+=(uint)(url[k+0]); 150 break; 151 } 152 case 6 : 153 { 154 b+=(uint)(url[k+4]); 155 a+=(uint)(url[k+3]<<24); 156 a+=(uint)(url[k+2]<<16); 157 a+=(uint)(url[k+1]<<8); 158 a+=(uint)(url[k+0]); 159 break; 160 } 161 case 5 : 162 { 163 b+=(uint)(url[k+4]); 164 a+=(uint)(url[k+3]<<24); 165 a+=(uint)(url[k+2]<<16); 166 a+=(uint)(url[k+1]<<8); 167 a+=(uint)(url[k+0]); 168 break; 169 } 170 case 4 : 171 { 172 a+=(uint)(url[k+3]<<24); 173 a+=(uint)(url[k+2]<<16); 174 a+=(uint)(url[k+1]<<8); 175 a+=(uint)(url[k+0]); 176 break; 177 } 178 case 3 : 179 { 180 a+=(uint)(url[k+2]<<16); 181 a+=(uint)(url[k+1]<<8); 182 a+=(uint)(url[k+0]); 183 break; 184 } 185 case 2 : 186 { 187 a+=(uint)(url[k+1]<<8); 188 a+=(uint)(url[k+0]); 189 break; 190 } 191 case 1 : 192 { 193 a+=(uint)(url[k+0]); 194 break; 195 } 196 /* case 0: nothing left to add */ 197 } 198 m_mix = mix(a,b,c); 199 /*-------------------------------------------- report the result */ 200 return m_mix[2]; 201 } 202 203 private uint GoogleCH(string url, uint length) 204 { 205 uint[] m_urluint=new uint[url.Length]; 206 for(int i=0;i<url.Length;i++) 207 { 208 m_urluint[i]=url[i]; 209 } 210 return GoogleCH(m_urluint,length,GOOGLE_MAGIC); 211 } 212 213 private uint GoogleCH(string sURL) 214 { 215 return GoogleCH(sURL,0); 216 } 217 218 private uint GoogleCH(uint[] url, uint length) 219 { 220 return GoogleCH(url, length, GOOGLE_MAGIC); 221 } 222 223 private uint[] c32to8bit(uint[] arr32) 224 { 225 uint[] arr8=new uint[arr32.GetLength(0)*4+3]; 226 227 for(int i=0;i<arr32.GetLength(0);i++) 228 { 229 for (int bitOrder=i*4;bitOrder<=i*4+3;bitOrder++) 230 { 231 arr8[bitOrder]=arr32[i]&255; 232 arr32[i]=zeroFill(arr32[i], 8); 233 } 234 } 235 return arr8; 236 } 237 238 //新算法,ToolBar 版本>>=2.0.114 239 public string CalculateChecksum(string sURL) 240 { 241 uint ch=GoogleCH("info:" + sURL); 242 243 ch = (((ch/7) << 2) | (((uint)(ch%13))&7)); 244 245 uint[] prbuf = new uint[20]; 246 prbuf[0] = ch; 247 for(int i = 1; i < 20; i++) { 248 prbuf[i] = prbuf[i-1]-9; 249 } 250 ch = GoogleCH(c32to8bit(prbuf), 80); 251 252 return string.Format("6{0}",ch); 253 } 254 255 //老算法,ToolBar 版本<2.0.114 256 public string CalculateChecksumOld(string sURL) 257 { 258 uint ch=GoogleCH("info:" + sURL); 259 260 string CalculateChecksum = "6" + Convert.ToString((ch)); 261 return CalculateChecksum; 262 } 263 } 264}上一页 [1] [2]
|
|
[ 收藏此页到: 天天|和讯|博采|ViVi|狐摘|我摘|天极 ] 文章录入:admin 责任编辑:admin |
|
上一篇文章: 用C#实现FTP搜索引擎 下一篇文章: C#中的委托与事件[翻译] |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |