ruby重写java对URL短地址压缩算法微博短地址原理解析
2017-04-07 15:54
861 查看
java实现对URL短地址压缩算法 public class ShortUrl { public static void main(String[] args) { String url = "http://www.sunchis.com"; for (String string : ShortText(url)) { print(string); } } public static String[] ShortText(String string){ String key = "XuLiang"; //自定义生成MD5加密字符串前的混合KEY String[] chars = new String[]{ //要使用生成URL的字符 "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","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" }; String hex = MD5Encode(key + string); int hexLen = hex.length(); int subHexLen = hexLen / 8; String[] ShortStr = new String[4]; for (int i = 0; i < subHexLen; i++) { String outChars = ""; int j = i + 1; String subHex = hex.substring(i * 8, j * 8); long idx = Long.valueOf("3FFFFFFF", 16) & Long.valueOf(subHex, 16); for (int k = 0; k < 6; k++) { int index = (int) (Long.valueOf("0000003D", 16) & idx); outChars += chars[index]; idx = idx >> 5; } ShortStr[i] = outChars; } return ShortStr; } private static void print(Object messagr){ System.out.println(messagr); } } 测试结果 ShortText("http://www.sunchis.com")[0]; //得到值:Jzyqma ShortText("http://www.sunchis.com")[1]; //得到值:QBrMzm ShortText("http://www.sunchis.com")[2]; //得到值:bQreM3 ShortText("http://www.sunchis.com")[3]; //得到值:VNBRna ruby实现对URL短地址压缩算法 require 'digest/md5' def short_text string key = "XuLiang" chars = [*'a'..'z',*'0'..'9',*'A'..'Z'] hex = Digest::MD5.hexdigest(key+string) hex_len = hex.length sub_hex_len = hex_len/8 short_str = Array.new(4) (0...sub_hex_len).each do |i| out_chars = "" j = i + 1 sub_hex = hex[i * 8...j * 8] idx = 0x3FFFFFFF & sub_hex.to_i(16) (0...6).each do |i| index = 0x0000003D & idx out_chars += chars[index] idx = idx >> 5 end short_str[i] = out_chars end return short_str end 测试结果 p short_text("http://www.sunchis.com") ["Jzyqma", "QBrMzm", "bQreM3", "VNBRna"] 进行对比相同,完成ruby对短地址的实现,ruby写起来还是要简洁一点的。
相关文章推荐
- URL短地址压缩算法 微博短地址原理解析 (Java实现)
- URL短地址压缩算法 微博短地址原理解析 (Java实现)
- URL短地址压缩算法 微博短地址原理解析 (Java实现)
- URL短地址压缩算法 微博短地址原理解析 (Java实现)
- URL短地址压缩算法 微博短地址原理解析 (Java实现)
- URL短地址压缩算法 微博短地址原理解析 (Java实现)
- URL短地址压缩算法 微博短地址原理解析(再转与Java实现)
- URL短地址压缩算法 微博短地址原理解析 (Java实现)
- URL短地址压缩算法 微博短地址原理解析 (Java实现)
- URL短地址压缩算法 微博短地址原理解析
- 【转】URL短地址压缩算法 微博短地址原理解析
- URL短地址压缩算法 微博短地址原理解析
- C# URL短地址压缩算法及短网址原理解析
- C# URL短地址压缩算法及短网址原理解析
- 【转】C# URL短地址压缩算法及短网址原理解析
- 微博URL短网址生成算法原理及(java版、php版实现实例)
- 【转】微博URL短网址生成算法原理及(java版、php版实现实例)
- C#如何实现url短地址?C#短网址压缩算法与短网址原理入门
- 微博URL短网址生成算法原理及(java版、php版实现实例)
- 微博URL短网址生成算法原理及(java版、php版实现实例)