首次提交

This commit is contained in:
yangy
2026-05-21 15:20:12 +08:00
commit 3224041990
32 changed files with 1504 additions and 0 deletions
+51
View File
@@ -0,0 +1,51 @@
package encode
import (
"encoding/base64"
"encoding/json"
)
const (
standardBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
customBase64 = "KLMPQRSTUVWXYZABCGHdefIJjkNOlmnopqrstuvwxyzabcghiDEF34501289+67/"
)
var base64Map = func() map[byte]byte {
m := make(map[byte]byte, len(standardBase64))
for i := 0; i < len(standardBase64); i++ {
m[standardBase64[i]] = customBase64[i]
}
return m
}()
// CustomBase64Encode 使用自定义字符映射对标准 Base64 进行转换
func CustomBase64Encode(data []byte) string {
standard := base64.StdEncoding.EncodeToString(data)
result := make([]byte, len(standard))
for i := 0; i < len(standard); i++ {
if c, ok := base64Map[standard[i]]; ok {
result[i] = c
} else {
result[i] = standard[i]
}
}
return string(result)
}
// EncodeJSON 将任意数据编码为 JSON 后,再进行自定义 Base64 编码
func EncodeJSON(v any) (string, error) {
jsonBytes, err := json.Marshal(v)
if err != nil {
return "", err
}
return CustomBase64Encode(jsonBytes), nil
}
// ParseBase64Param 解析 base64Resp 参数,默认为 true
func ParseBase64Param(c interface{ Query(string) string }) bool {
v := c.Query("base64Resp")
if v == "" || v == "true" || v == "1" {
return true
}
return false
}