代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。