2 Star 0 Fork 1

web-bird/bird

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
short_url.go 1018 Bytes
一键复制 编辑 原始数据 按行查看 历史
悟道人 提交于 2020-08-02 20:41 +08:00 . 增加shortURL
package utils
import (
"crypto/md5"
"encoding/hex"
"strconv"
)
const (
VAL = 0x3FFFFFFF
INDEX = 0x0000003D
)
var (
alphabet = []byte("abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")
)
/** implementation of short url algorithm **/
func MakeShortURL(longURL string) ([4]string, error) {
md5Str := getMd5Str(longURL)
//var hexVal int64
var tempVal int64
var result [4]string
var tempUri []byte
for i := 0; i < 4; i++ {
tempSubStr := md5Str[i*8 : (i+1)*8]
hexVal, err := strconv.ParseInt(tempSubStr, 16, 64)
if err != nil {
return result, nil
}
tempVal = int64(VAL) & hexVal
var index int64
tempUri = []byte{}
for i := 0; i < 6; i++ {
index = INDEX & tempVal
tempUri = append(tempUri, alphabet[index])
tempVal = tempVal >> 5
}
result[i] = string(tempUri)
}
return result, nil
}
/** generate md5 checksum of URL in hex format **/
func getMd5Str(str string) string {
m := md5.New()
m.Write([]byte(str))
c := m.Sum(nil)
return hex.EncodeToString(c)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/web-bird/bird.git
git@gitee.com:web-bird/bird.git
web-bird
bird
bird
ac7d4c82d0c1

搜索帮助