package main import ( "fmt" "strconv" "strings" "time" "github.com/google/uuid" ) func ConvertStringUint32(s string) (uint32, error) { v, err := strconv.ParseUint(s, 10, 32) return uint32(v), err } func ConvertStringToRgba(str string) (*Rgba, error) { parts := strings.SplitN(str, ",", 5) if len(parts) != 4 { return nil, fmt.Errorf("invalid rgba") } rgba := &Rgba{} for i, p := range parts { n, err := strconv.ParseUint(strings.TrimSpace(p), 10, 8) if err != nil { return nil, fmt.Errorf("invalid component %d: %w", i, err) } rgba[i] = uint8(n) } return rgba, nil } func RgbaToUint32(r *Rgba) uint32 { return uint32(r[0])<<24 | uint32(r[1])<<16 | uint32(r[2])<<8 | uint32(r[3]) } func Uint32ToRgba(v uint32) *Rgba { return &Rgba{uint8(v >> 24), uint8(v >> 16), uint8(v >> 8), uint8(v)} } func ConvertStringUuid(str string) (uuid.UUID, error) { return uuid.Parse(str) } func ConvertStringTimestamp(str string) (time.Time, error) { return time.Parse(time.RFC3339, str) }