From dc9c2e35561689f813a84d861048efe63cbff608 Mon Sep 17 00:00:00 2001 From: cdle <798731886@qq.com> Date: Mon, 27 Sep 2021 09:56:06 +0800 Subject: [PATCH] update --- develop/dwz/init.go | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/develop/dwz/init.go b/develop/dwz/init.go index d3ab160..6c7f74e 100644 --- a/develop/dwz/init.go +++ b/develop/dwz/init.go @@ -2,7 +2,9 @@ package dwz import ( "fmt" + "math" "net/http" + "strings" "github.com/cdle/sillyGirl/core" "github.com/gin-gonic/gin" @@ -40,13 +42,41 @@ func getDwz(url string) string { Url: url, } dwz.Create(su) - return dwz.Get("address", "https://4co.cc"+"/d"+fmt.Sprint(su.ID)) + return dwz.Get("address", "https://4co.cc"+"/d"+encode(int64(su.ID))) } func getWz(id string) string { su := &ShortUrl{ - ID: core.Int(id), + ID: int(decode(id)), } dwz.First(su) return fmt.Sprint(su.Url) } + +var chars string = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + +func encode(num int64) string { + bytes := []byte{} + for num > 0 { + bytes = append(bytes, chars[num%62]) + num = num / 62 + } + reverse(bytes) + return string(bytes) +} + +func decode(str string) int64 { + var num int64 + n := len(str) + for i := 0; i < n; i++ { + pos := strings.IndexByte(chars, str[i]) + num += int64(math.Pow(62, float64(n-i-1)) * float64(pos)) + } + return num +} + +func reverse(a []byte) { + for left, right := 0, len(a)-1; left < right; left, right = left+1, right-1 { + a[left], a[right] = a[right], a[left] + } +}