encoding/AI.md
2026-04-24 16:58:29 +08:00

3.8 KiB
Raw Permalink Blame History

AI Coding Context: @go/encoding

本索引供 AI 模型理解 @go/encoding 的设计规范,以生成符合本项目“语义优先、安全第一”哲学的代码。

🤖 AI 行为准则

  1. 区分数据与文本:二进制数据 (Hex/Base64/Int) 必须基于 []byte;文本格式 (URL/HTML) 优先使用 string
  2. 默认开启静默模式:在业务逻辑中,优先推荐使用 MustUnXxx 系列 API。一旦解码失败它们返回零值无需额外 if err != nil,保持逻辑流平滑。
  3. IntEncoder 集成:所有整数进制编码、填充、混淆、哈希操作均通过 IntEncoder 实例或其导出的封装函数进行。
  4. 安全链路:优先使用基于字节切片的 API减少不必要的内存分配与 string 转换。

🛠 API Reference

基础编解码 (Hex/Base64)

  • func Hex(data []byte) []byte:将数据转换为 Hex 编码的字节切片。
  • func HexToString(data []byte) string:将数据转换为 Hex 编码的字符串。
  • func MustUnHex(data []byte) []byte:解码 Hex出错时返回空字节切片。
  • func MustUnHexFromString(data string) []byte:解码 Hex 字符串,出错时返回空字节切片。
  • func UnHex(data []byte) ([]byte, error):解码 Hex。
  • func Base64(data []byte) []byte:将数据转换为 Base64 编码的字节切片。
  • func Base64ToString(data []byte) string:将数据转换为 Base64 编码的字符串。
  • func UrlBase64(data []byte) []byte:将数据转换为 URL 安全的 Base64 编码的字节切片。
  • func UrlBase64ToString(data []byte) string:将数据转换为 URL 安全的 Base64 编码的字符串。
  • func MustUnBase64(data []byte) []byte:解码 Base64出错时返回空字节切片。
  • func MustUnBase64FromString(data string) []byte:解码 Base64 字符串,出错时返回空字节切片。
  • func MustUnUrlBase64(data []byte) []byte:解码 URL Base64出错时返回空字节切片。
  • func MustUnUrlBase64FromString(data string) []byte:解码 URL Base64 字符串,出错时返回空字节切片。
  • func UnBase64(data []byte) ([]byte, error):解码 Base64。
  • func UnUrlBase64(data []byte) ([]byte, error):解码 URL Base64。

Web 编码 (URL/HTML)

  • func UrlEncode(data []byte) stringURL 编码。
  • func MustUnUrlEncode(data string) []byteURL 解码,出错时返回空字节切片。
  • func HtmlEscape(data []byte) stringHTML 转义。
  • func MustUnHtmlEscape(data string) stringHTML 反转义。
  • func Utf8Valid(data []byte) bool:校验 UTF-8。

整数编码 (IntEncoder)

  • func NewIntEncoder(digits string, radix uint8) (*IntEncoder, error):创建自定义编码器。
  • func EncodeInt(u uint64) []byte:默认编码整数。
  • func AppendInt(buf []byte, u uint64) []byte:默认追加整数。
  • func DecodeInt(buf []byte) uint64:默认解码整数。
  • func ExchangeInt(buf []byte) []byte:默认置换混淆。
  • func HashInt(data []byte, key []byte) []byte:默认 HMAC-SHA512 哈希。
  • func (enc *IntEncoder) EncodeInt(u uint64) []byte
  • func (enc *IntEncoder) AppendInt(buf []byte, u uint64) []byte
  • func (enc *IntEncoder) FillInt(buf []byte, length int) []byte:填充至指定长度。
  • func (enc *IntEncoder) ExchangeInt(buf []byte) []byte
  • func (enc *IntEncoder) HashInt(data []byte, key []byte) []byte
  • func (enc *IntEncoder) DecodeInt(buf []byte) uint64

🧩 典型模式 (Best Practices)

  • 推荐:业务逻辑流 (Silence Mode):

    // 解码失败即视为空,业务无需中断
    raw := encoding.MustUnHexFromString(config.Data)
    process(raw)
    
  • 推荐:整数编解码 (IntEncoder):

    // 使用默认 62 进制编码器,支持追加与混淆
    buf := encoding.EncodeInt(userID)
    buf = encoding.DefaultIntEncoder.ExchangeInt(buf)