1 Star 0 Fork 0

tuboyou/c2

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
base64.go 1.86 KB
一键复制 编辑 原始数据 按行查看 历史
tuboyou 提交于 2025-03-10 18:02 +08:00 . 添加注释
package u2
import (
"bytes"
"compress/gzip"
"encoding/base64"
"io"
)
// Base64Encode 对字符串进行Base64编码,可选择是否进行GZIP压缩
//
// 参数:
// - s: 需要编码的原始字符串
// - gzipForm: 是否启用GZIP压缩
//
// 返回值:
// - string: 编码后的Base64字符串
// - error: 编码过程中发生的错误
func Base64Encode(s string, gzipForm bool) (string, error) {
var buf bytes.Buffer
da := []byte(s)
if gzipForm {
gzipWriter := gzip.NewWriter(&buf)
if _, err := gzipWriter.Write(da); err != nil {
gzipWriter.Close()
return "", err
}
if err := gzipWriter.Close(); err != nil {
return "", err
}
da = buf.Bytes()
buf.Reset() // 重置buffer以便重用
}
encoder := base64.NewEncoder(base64.StdEncoding, &buf)
defer encoder.Close()
if _, err := encoder.Write(da); err != nil {
return "", err
}
if err := encoder.Close(); err != nil {
return "", err
}
return buf.String(), nil
}
// Base64Decode 对Base64编码的字符串进行解码,可选择是否进行GZIP解压缩
//
// 参数:
// - s: 需要解码的Base64字符串
// - gzipForm: 是否启用GZIP解压缩
//
// 返回值:
// - string: 解码后的原始字符串
// - error: 解码过程中发生的错误
func Base64Decode(s string, gzipForm bool) (string, error) {
decoder := base64.NewDecoder(base64.StdEncoding, bytes.NewBufferString(s))
if gzipForm {
gzipReader, err := gzip.NewReader(decoder)
if err != nil {
return "", err
}
defer gzipReader.Close()
// 获取gzip头部信息
header := gzipReader.Header
_ = header // 这里可以根据需要检查header字段
var buf bytes.Buffer
if _, err := io.Copy(&buf, gzipReader); err != nil {
return "", err
}
return buf.String(), nil
}
var buf bytes.Buffer
if _, err := io.Copy(&buf, decoder); err != nil {
return "", err
}
return buf.String(), nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/tuboyou/c2.git
git@gitee.com:tuboyou/c2.git
tuboyou
c2
c2
v0.0.4

搜索帮助