base64_amd64.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // +build amd64,go1.17,!go1.25
  2. package rt
  3. import (
  4. _ "unsafe"
  5. "github.com/cloudwego/base64x"
  6. )
  7. func DecodeBase64(raw []byte) ([]byte, error) {
  8. ret := make([]byte, base64x.StdEncoding.DecodedLen(len(raw)))
  9. n, err := base64x.StdEncoding.Decode(ret, raw)
  10. if err != nil {
  11. return nil, err
  12. }
  13. return ret[:n], nil
  14. }
  15. func EncodeBase64ToString(src []byte) string {
  16. return base64x.StdEncoding.EncodeToString(src)
  17. }
  18. func EncodeBase64(buf []byte, src []byte) []byte {
  19. if len(src) == 0 {
  20. return append(buf, '"', '"')
  21. }
  22. buf = append(buf, '"')
  23. need := base64x.StdEncoding.EncodedLen(len(src))
  24. if cap(buf) - len(buf) < need {
  25. tmp := make([]byte, len(buf), len(buf) + need*2)
  26. copy(tmp, buf)
  27. buf = tmp
  28. }
  29. base64x.StdEncoding.Encode(buf[len(buf):cap(buf)], src)
  30. buf = buf[:len(buf) + need]
  31. buf = append(buf, '"')
  32. return buf
  33. }
  34. //go:linkname SubrB64Decode github.com/cloudwego/base64x._subr__b64decode
  35. var SubrB64Decode uintptr
  36. //go:linkname SubrB64Encode github.com/cloudwego/base64x._subr__b64encode
  37. var SubrB64Encode uintptr